ros获取相机图像的C++程序
时间: 2024-05-12 17:16:31 浏览: 116
C++中用于读取图像的程序
4星 · 用户满意度95%
这是一个简单的ROS程序,用于获取相机图像。
```c
#include <ros/ros.h>
#include <sensor_msgs/Image.h>
#include <opencv2/opencv.hpp>
using namespace cv;
void imageCallback(const sensor_msgs::Image::ConstPtr& msg)
{
try
{
Mat image = cv_bridge::toCvCopy(msg, "bgr8")->image;
imshow("Camera", image);
waitKey(10);
}
catch (cv_bridge::Exception& e)
{
ROS_ERROR("Could not convert from '%s' to 'bgr8'.", msg->encoding.c_str());
}
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "camera_subscriber");
ros::NodeHandle nh;
namedWindow("Camera", WINDOW_AUTOSIZE);
startWindowThread();
ros::Subscriber sub = nh.subscribe("/camera/image_raw", 1, imageCallback);
ros::spin();
return 0;
}
```
这个程序订阅了`/camera/image_raw`主题,当有新的消息到达时,会调用`imageCallback`函数。该函数将ROS图像消息转换为OpenCV格式,并在窗口中显示图像。
注意,这个程序使用了OpenCV库,因此需要在编译时链接该库。
```bash
$ g++ -o camera_subscriber camera_subscriber.cpp `pkg-config --cflags --libs opencv` -lroscore
```
阅读全文