在ROS中用opencv订阅摄像头图像并显示

    技术2022-07-10  147

    在ROS中用opencv订阅摄像头图像并显示

    在ROS中用openCV显示摄像头并发布图像数据在ROS中用opencv订阅摄像头图像并显示使用C++实现CMakeLists.txt配置 使用Python实现 客官!如果觉得有用,给俺点赞支持下呗!

    在ROS中用openCV显示摄像头并发布图像数据

    参考本人博客:在ROS中用openCV显示摄像头并发布图像数据

    在ROS中用opencv订阅摄像头图像并显示

    使用C++实现

    #include <ros/ros.h> #include <image_transport/image_transport.h> #include <opencv2/highgui/highgui.hpp> #include <cv_bridge/cv_bridge.h> void imageCallback(const sensor_msgs::ImageConstPtr& msg) { try // 如果转换失败,则提跳转到catch语句 { cv::imshow("view", cv_bridge::toCvShare(msg, "bgr8")->image); // 将图像转换openCV的格式,并输出到窗口 cv::waitKey(1); // 一定要有wiatKey(),要不然是黑框或者无窗口 } catch(cv_bridge::Exception& e) { ROS_ERROR("Could not convert for '%s' to 'bgr8'.", msg->encoding.c_str()); } } int main(int argc, char** argv) { ros::init(argc, argv, "imageSub_node"); // 注册节点名 ros::NodeHandle nh; // 注册句柄 image_transport::ImageTransport it(nh); // 注册句柄 image_transport::Subscriber imageSub = it.subscribe("/cameraImage", 1, imageCallback); // 订阅/cameraImage话题,并添加回调函数 ros::spin(); // 循环等待回调函数触发 }

    CMakeLists.txt配置

    添加(最后两个的imageSub是生成可执行文件的名字,根据自己来设定):

    find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) add_executable(imageSub src/image_sub.cpp) target_link_libraries(imageSub ${catkin_LIBRARIES} ${OpenCV_LIBS})

    注:如果前两个已经添加了,可以不用再添加

    使用Python实现

    未完待续

    客官!如果觉得有用,给俺点赞支持下呗!

    欢迎留言讨论,指出不足和建议!

    Processed: 0.020, SQL: 11