ROS读取视频,并发布topic

17 篇文章 0 订阅
10 篇文章 0 订阅
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}
)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_40749043

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值