catkin_make
source ~/video2topic_ws/devel/setup.bash
rosrun video2topic_src video2topic_src
注意修改:其中的cpp文件中的内容,第24行,然后还要catkin_make
const string vsa = "file:///home/nvidia/revording/output1700.mp4";
rosrun video2topic_src video2topic_src /home/nvidia/revording/output1700.mp4
catkin_create_pkg video2topic_src roscpp rospy OpenCV cv_bridge image_transport
#include <ros/ros.h>
#include <image_transport/image_transport.h>
#include <opencv2/highgui/highgui.hpp>
#include <cv_bridge/cv_bridge.h>
#include <camera_info_manager/camera_info_manager.h>
#include <sstream>
using namespace std;
using namespace cv;
using namespace ros;
int main(int argc, char** argv)
{
// Check if video source has been passed as a parameter
init(argc, argv, "video2topic_src");
NodeHandle nh;
string camera_name = "csi_cam_0";
image_transport::ImageTransport it(nh);
image_transport::Publisher pub_cam_msg = it.advertise(camera_name+"/image_raw", 1);
Publisher pub_cam_info = nh.advertise<sensor_msgs::CameraInfo>(camera_name+"/camera_info", 1);
const string vsa = "file:///home/nvidia/revording/output1700.mp4";
// IP webcam
// VideoCapture cap(vsa);
VideoCapture cap(vsa);
// Check video is open
if (!cap.isOpened())
{
cerr<<"Could not open video!!"<<endl;
nh.shutdown();
return 1;
}
cout << "Camera: ON ------------>>>>>>>>>>>>" << endl;
Mat frame;
sensor_msgs::ImagePtr cam_msg;
const string camurl = "file:///home/nvidia/video2topic_ws/src/video2topic_src/src/camera_cal.yaml";
camera_info_manager::CameraInfoManager caminfo(nh, camera_name, camurl);
sensor_msgs::CameraInfo ci;
Rate loop_rate(30);
while (nh.ok()) {
cap >> frame;
if(!frame.empty())
{
cam_msg = cv_bridge::CvImage(std_msgs::Header(), "bgr8", frame).toImageMsg();
ci.header.stamp = ros::Time::now(); //
ci=caminfo.getCameraInfo();
pub_cam_msg.publish(cam_msg);
pub_cam_info.publish(ci);
//imshow("video stream",frame);
//waitKey(1); // 30 ms */
waitKey(50); // 30 ms */
}
else
{
cout << "EMPTY FRAME!" << endl;
}
spinOnce();
//loop_rate.sleep();
}
return 0;
}
cmake_minimum_required(VERSION 3.0.2)
project(video2topic_src)
SET(OpenCV_DIR /usr/lib/aarch64-linux-gnu/cmake/opencv4)
find_package(catkin REQUIRED COMPONENTS
cv_bridge
image_transport
roscpp
OpenCV
camera_info_manager
)
catkin_package(
)
include_directories(
${catkin_INCLUDE_DIRS}
${OpenCV_INCLUDE_DIRS}
)
add_executable(video2topic_src src/video2topic_src.cpp)
target_link_libraries(${PROJECT_NAME}
${catkin_LIBRARIES}
${OpenCV_LIBS}
)