赞
踩
依赖
cv_bridge image_transport roscpp rospy sensor_msgs std_msgs
CMakeLists.txt添加
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(pub_img_topic ${catkin_LIBRARIES} ${Opencv_LIBS})
#include <ros/ros.h> #include <image_transport/image_transport.h> #include <opencv2/highgui/highgui.hpp> #include <cv_bridge/cv_bridge.h> int main(int argc, char** argv) { ros::init(argc, argv, "publisher_img"); ros::NodeHandle nh; image_transport::ImageTransport it(nh); image_transport::Publisher pub = it.advertise("image", 1); cv::Mat image = cv::imread("/home/ghigher/workplace/pointcloud_ws/src/pub_sub_image/images/ros_logo.png"); if (image.empty()) { ROS_INFO("Image is Empty!"); } sensor_msgs::ImagePtr msg = cv_bridge::CvImage(std_msgs::Header(), "bgr8", image).toImageMsg(); ros::Rate loop_rate(5); while(nh.ok()) { pub.publish(msg); ros::spinOnce(); loop_rate.sleep(); } }
#! /usr/bin/env python # -*-coding:utf8 -*- import rospy import cv2 from cv_bridge import CvBridge, CvBridgeError from sensor_msgs.msg import Image class image_converter: def __init__(self): self.image_pub = rospy.Publisher("cv_bridge_image", Image, queue_size=1) self.bridge = CvBridge() self.image_sub = rospy.Subscriber("/usb_cam/image_raw", Image, self.callback) def callback(self, imgmsg): cv_image = self.bridge.imgmsg_to_cv2(imgmsg, "bgr8") cv_image_gray = cv2.cvtColor(cv_image, cv2.COLOR_BGR2GRAY) cv2.imshow("image", cv_image_gray) cv2.waitKey(1) self.image_pub.publish(self.bridge.cv2_to_imgmsg(cv_image_gray)) if __name__ == "__main__": try: rospy.init_node("cv_to_bridge") rospy.loginfo("Starting cv_bridge node ...") image_converter() rospy.spin() except KeyboardInterrupt: rospy.loginfo("Shutdown cv_bridge node !!!") cv2.destroyAllWindows()
查看rqt_image_view
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。