diff --git a/app/imshow/CMakeLists.txt b/app/imshow/CMakeLists.txt deleted file mode 100644 index 9fdd9e9..0000000 --- a/app/imshow/CMakeLists.txt +++ /dev/null @@ -1,41 +0,0 @@ -cmake_minimum_required(VERSION 3.8) -project(imshow) - -if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - add_compile_options(-Wall -Wextra -Wpedantic) -endif() - -# find dependencies -find_package(ament_cmake REQUIRED) -find_package(rclcpp REQUIRED) -find_package(sensor_msgs REQUIRED) -find_package(cv_bridge REQUIRED) -find_package(image_transport REQUIRED) -find_package(OpenCV REQUIRED) -# uncomment the following section in order to fill in -# further dependencies manually. -# find_package( REQUIRED) - -# Create executable -add_executable(imshow src/imshow.cpp src/main.cpp) -target_include_directories(imshow - PUBLIC - $ - $ - ${OpenCV_INCLUDE_DIRS} -) - -# Link dependencies -ament_target_dependencies(imshow rclcpp sensor_msgs cv_bridge image_transport) - -target_link_libraries(imshow ${OpenCV_LIBRARIES}) - -# Install targets -install(TARGETS - imshow - DESTINATION lib/${PROJECT_NAME}) - -install(DIRECTORY launch -DESTINATION share/${PROJECT_NAME}) - -ament_package() diff --git a/app/imshow/imshow/__init__.py b/app/imshow/imshow/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/imshow/imshow/imshow.py b/app/imshow/imshow/imshow.py new file mode 100644 index 0000000..8553241 --- /dev/null +++ b/app/imshow/imshow/imshow.py @@ -0,0 +1,27 @@ +import rclpy +from rclpy.node import Node +from sensor_msgs.msg import Image +from cv_bridge import CvBridge +import cv2 + + +class Imshow(Node): + def __init__(self): + super().__init__('imshow') + self.subscription=self.create_subscription(Image, 'camera_image', self.listener_callback, 10) + self.bridge=CvBridge() + + def listener_callback(self, msg): + frame=self.bridge.imgmsg_to_cv2(msg, "bgr8") + cv2.imshow('Camera', frame) + cv2.waitKey(1) + +def main(args=None): + rclpy.init(args=args) + imshow=Imshow() + rclpy.spin(imshow) + imshow.destroy_node() + rclpy.shutdown() + +if __name__=='__main__': + main() \ No newline at end of file diff --git a/app/imshow/include/imshow/imshow.hpp b/app/imshow/include/imshow/imshow.hpp deleted file mode 100644 index 698d842..0000000 --- a/app/imshow/include/imshow/imshow.hpp +++ /dev/null @@ -1,13 +0,0 @@ -#include -#include -#include -#include - -class Imshow : public rclcpp::Node { -public: - Imshow(); - -private: - void image_callback(const sensor_msgs::msg::Image::SharedPtr msg); - rclcpp::Subscription::SharedPtr subscription_; -}; diff --git a/app/imshow/package.xml b/app/imshow/package.xml index 7eaf47e..56f872a 100644 --- a/app/imshow/package.xml +++ b/app/imshow/package.xml @@ -4,20 +4,13 @@ imshow 0.0.0 ROS 2 package for receiving images - hiro + hiro MIT License - ament_cmake - rclcpp - sensor_msgs - cv_bridge - image_transport - rclcpp + rclpy sensor_msgs cv_bridge - image_transport - - ament_cmake + ament_python diff --git a/app/imshow/resource/imshow b/app/imshow/resource/imshow new file mode 100644 index 0000000..e69de29 diff --git a/app/imshow/setup.cfg b/app/imshow/setup.cfg new file mode 100644 index 0000000..433e62c --- /dev/null +++ b/app/imshow/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script_dir=$base/lib/imshow +[install] +install_scripts=$base/lib/imshow \ No newline at end of file diff --git a/app/imshow/setup.py b/app/imshow/setup.py new file mode 100644 index 0000000..b5371bf --- /dev/null +++ b/app/imshow/setup.py @@ -0,0 +1,29 @@ +import os +from glob import glob + +from setuptools import find_packages, setup + +package_name = 'imshow' + +setup( + name=package_name, + version='0.0.0', + packages=[package_name], + data_files=[ + ('share/ament_index/resource_index/packages',['resource/' + package_name]), + ('share/' + package_name,['package.xml']), + (os.path.join('share',package_name,'launch'),glob(os.path.join('launch','*'))) + ], + install_requires=['setuptools'], + zip_safe=True, + maintainer='hiro', + maintainer_email='yoshikawa.h.ah@m.titech.ac.jp', + description='Image display for ROS2', + license='MIT License', + tests_require=[], + entry_points={ + 'console_scripts': [ + 'imshow = imshow.imshow:main', + ], + }, +) diff --git a/app/imshow/src/imshow.cpp b/app/imshow/src/imshow.cpp deleted file mode 100644 index 6191576..0000000 --- a/app/imshow/src/imshow.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "imshow/imshow.hpp" - -Imshow::Imshow() : Node("imshow") { - subscription_ = this->create_subscription( - "camera/image", - 10, - std::bind(&Imshow::image_callback, this, std::placeholders::_1) - ); -} - -void Imshow::image_callback(const sensor_msgs::msg::Image::SharedPtr msg) { - try { - const cv::Mat frame = cv_bridge::toCvCopy(msg, "bgr8")->image; - cv::imshow("Received Image", frame); - cv::waitKey(1); - } catch (const cv_bridge::Exception& e) { - RCLCPP_ERROR(this->get_logger(), "cv_bridge exception: %s", e.what()); - return; - } -} diff --git a/app/imshow/src/main.cpp b/app/imshow/src/main.cpp deleted file mode 100644 index 0726bc2..0000000 --- a/app/imshow/src/main.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include "imshow/imshow.hpp" -#include - -int main(int argc, char* argv[]) { - rclcpp::init(argc, argv); - auto node = std::make_shared(); - rclcpp::spin(node); - rclcpp::shutdown(); - return 0; -}