栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

ROS——使用OpenCV实现摄像头的发送和接收

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ROS——使用OpenCV实现摄像头的发送和接收

文章目录
    • 使用OpenCV读取摄像头并发布图像话题
    • 使用OpenCV接收图像
    • 编译过程报错解决
    • C++节点和python节点间传送图像

参考教程:OpenCV调用USB摄像头并发布topic(详细图文)

使用OpenCV读取摄像头并发布图像话题

image_pub.cpp

#include 
#include 
#include 
#include 
#include 
#include 
 
int main(int argc, char** argv)
{
  ros::init(argc, argv, "img_publisher");
  ros::NodeHandle nh;
  image_transport::ImageTransport it(nh);
  image_transport::Publisher pub = it.advertise("/camera/color/image_raw", 1);
 
  cv::VideoCapture cap;
  cv::Mat frame;
  int deviceID=0;
  if(argc>1)
	deviceID=argv[1][0]-'0';
  int apiID=cv::CAP_ANY;
  cap.open(deviceID+apiID);
  if(!cap.isOpened()){
	std::cerr<<"ERROR! Unable to open camera"< 
使用OpenCV接收图像 
  • 在ROS中 opencv 发布和接收图像消息

image_sub.cpp

#include 
#include 
#include 
#include 

cv::Mat image;

void imageCallback(const sensor_msgs::ImageConstPtr& msg)
{
  ROS_INFO_STREAM("Get Msg");
  try
  {
    image = cv_bridge::toCvShare(msg, "bgr8") -> image;
    cv::imshow("view", image);
  }
  catch (cv_bridge::Exception& e)
  {
    ROS_ERROR("Could not convert from '%s' to 'bgr8'.", msg->encoding.c_str());
}
  cv::waitKey(1);
}

int main(int argc, char **argv)
{
  ros::init(argc, argv, "image_listener");
  ros::NodeHandle nh;
  cv::namedWindow("view");
  cv::startWindowThread();
  image_transport::ImageTransport it(nh);
  image_transport::Subscriber sub = it.subscribe("/camera/color/image_raw", 1, imageCallback);
  ros::spin();
  cv::destroyWindow("view");
}

CMakeLists.txt

find_package(catkin REQUIRED COMPONENTS
  roscpp
  OpenCV
  cv_bridge
  image_transport
)

find_package(OpenCV REQUIRED)
find_package(Boost REQUIRED)

catkin_package()

include_directories(
  include 
  
  ${catkin_INCLUDE_DIRS}
  ${OpenCV_INCLUDE_DIRS}
)

add_executable(image_pub src/image_pub.cpp)
target_link_libraries(image_pub ${catkin_LIBRARIES} ${OpenCV_LIBS} ${Boost_LIBRARIES})

add_executable(image_sub  src/image_sub.cpp)
target_link_libraries(image_sub  ${catkin_LIBRARIES} ${OpenCV_LIBS} ${Boost_LIBRARIES})

编译过程报错解决
  • 参考文章:OpenCV找不到config.cmake(简单直接的解决方法):Could not find a package configuration file provided by “OpenCV“
C++节点和python节点间传送图像
  • 基于ROS利用客户端和服务端实现C++节点和python节点间传送图像
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/822175.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号