ZBLOG

#include #include #include #include #include int main(int argc, char** argv) { // 初始化ROS节点 ros::init(argc, argv, "image_pub...

如果要实时发送图像,你可以使用ROS中的相机驱动程序(例如USB摄像头)来捕获实时图像,并将其发布到话题中。以下是一个示例代码,用于捕获实时图像并发布到话题中:

#include <ros/ros.h>
#include <sensor_msgs/Image.h>
#include <opencv2/opencv.hpp>
#include <cv_bridge/cv_bridge.h>
#include <image_transport/image_transport.h>

int main(int argc, char** argv) {
    // 初始化ROS节点
    ros::init(argc, argv, "camera_publisher");
    ros::NodeHandle nh;

    // 创建一个发布器
    image_transport::ImageTransport it(nh);
    image_transport::Publisher pub = it.advertise("/camera/image_raw", 1);

    // 打开相机设备
    cv::VideoCapture cap(0); // 0表示默认相机

    if (!cap.isOpened()) {
        ROS_ERROR("Failed to open camera.");
        return -1;
    }

    while (ros::ok()) {
        cv::Mat frame;
        cap >> frame; // 从相机中读取一帧图像

        sensor_msgs::ImagePtr msg = cv_bridge::CvImage(std_msgs::Header(), "bgr8", frame).toImageMsg();
        pub.publish(msg);

        ros::spinOnce();
        // 设置发布频率
        ros::Rate rate(10); // 每秒10次

        rate.sleep();
    }

    return 0;
}

在这个例子中,我们使用OpenCV打开默认相机设备(通过参数0),并从相机中连续读取帧。然后,我们将每一帧图像转换为ROS消息,并发布到”/camera/image_raw”话题中。

请确保在编译和运行节点之前,已经连接了相机设备。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=10876

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?