ROS操作系统 opencv-python读取摄像头+rviz可视化


测试环境:树莓派ubuntu 18.04.5 ,python 3.6
硬件:免驱USB摄像头

一、安装opencv-python

pip3 install opencv-python

二、opencv读取摄像头

python 版本opencv读取摄像头几行代码即可实现。

import cv2
capture = cv2.VideoCapture(0)`
capture.open(0)
while True:       
	ret, frame = capture.read()
    cv2.imshow("capture", frame)          #显示
    if cv2.waitKey(100) & 0xff == ord('q'):  #按q退出
        	break
capture.release()  #释放摄像头
cv2.destroyAllWindows() #关闭窗口

三、图片转换为ROS图片格式并且在rviz显示

接下来在ROS系统中订阅摄像头的图片信息(在ROS中订阅OPENCV读取的图片,我们要将图片格式转化为ROS可接收的图片格式)

这里我发的是sensor_msgs/Image 消息结构如下,我们只要将以下参数赋值,并发布即可成功的在ROS上发布。
在这里插入图片描述

#!/usr/bin/python2
# coding=utf-8

import cv2
import numpy as np
from std_msgs.msg import Header
from sensor_msgs.msg import Image
import rospy
from cv_bridge import CvBridge , CvBridgeError

capture = cv2.VideoCapture(0)
if __name__=="__main__":
    capture.open(0)
    rospy.init_node('Camera', anonymous=True) #定义节点
    image_pub=rospy.Publisher('/image_view/image_raw',
                                   Image,
                                    queue_size = 10) #定义话题

    while True:       
            ret, frame = capture.read()
            frame = cv2.flip(frame,0)   #镜像操作
            frame = cv2.flip(frame,1)   #镜像操作   
       
            ros_frame = Image()
            header = Header(stamp = rospy.Time.now())
            header.frame_id = "Camera"
            ros_frame.header=header
            ros_frame.width = 640
            ros_frame.height = 480
            ros_frame.encoding = "bgr8"
            ros_frame.step = 1920
            ros_frame.data = np.array(frame).tostring() #图片格式转换
            image_pub.publish(ros_frame) #发布消息
                  
            rate = rospy.Rate(10) # 10hz 

    capture.release()
    cv2.destroyAllWindows() 





打开RVIZ ,添加Image,并选择图片的话题
在这里插入图片描述实际效果如图,左侧为原图,右侧对图片进行边缘检测。
在这里插入图片描述

  • 8
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值