新建目录(有必要的话)
mkdir -p catkin_ws/src
cd catkin_ws
catkin_make
新建包 usb_cam,其中附加的依赖有std_msgs(消息传递),roscpp(c++),cv_bridge(ros和opencv图像转换),sensor_msgs(传感器消息),image_transport(图像编码传输)
cd src
catkin_create_pkg usb_cam std_msgs roscpp cv_bridge sensor_msgs image_transport
在usb_cam/src文件夹中添加两个cpp,一个发布图像消息img_publisher.cpp,一个接收并查看图像消息img_viewer.cpp
img_publisher.cpp
#include <ros/ros.h>
#include <image_transport/image_transport.h>
#include <opencv2/highgui.hpp>
#include <opencv2/calib3d.hpp>
#include <cv_bridge/cv_bridge.h>
#include <iostream>
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/image", 1);
cv::VideoCapture cap;
cv::Mat frame;
int deviceID=0;
if(argc>1)
deviceID=ar