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

  • 一、安装opencv-python
  • 二、opencv读取摄像头
  • 三、图片转换为ROS图片格式并且在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-8import cv2
import numpy as np
from std_msgs.msg import Header
from sensor_msgs.msg import Image
import rospy
from cv_bridge import CvBridge , CvBridgeErrorcapture = 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=headerros_frame.width = 640ros_frame.height = 480ros_frame.encoding = "bgr8"ros_frame.step = 1920ros_frame.data = np.array(frame).tostring() #图片格式转换image_pub.publish(ros_frame) #发布消息rate = rospy.Rate(10) # 10hz capture.release()cv2.destroyAllWindows() 

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

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

  1. python读取摄像头数据_python 读取摄像头数据并保存的实例

    python如何能采集多个摄像头的数据 .要用opencv吗?听说这个问题不好解决啊只有把自己过得像王后一样,才能吸引你想要的国王. 可以,用PYQT+CV2,四个USB连接成功,程序如下,UI要自己 ...

  2. opencv python 从摄像头获取视频、帧率、分辨率等属性设置和使用

    opencv python 从摄像头获取视频.帧率.分辨率等属性设置和使用 文章目录: 1,为了获取视频,你应该创建一个 VideoCapture 对象.他的参数可以是设备的索引号,或者是一个视频文件 ...

  3. python读取摄像头数据_Opencv 读取摄像头数据 | 代码驱动科技

    如果做监控,经常会遇到读取摄像头的数据.如何在python中读取摄像头数据,并显示呢? 双码流 一般高清摄像头产品编码器可同时产生两个不同的编码格式,统称主码流和子码流,双码流技术兼顾了高质量图像传输 ...

  4. python读取摄像头或者视频文件、并在gui中实时显示_python:tkinter显示来自网络摄像头的视频并执行QR扫描...

    我一直在尝试创建一个tkinter顶级窗口,用于流式传输视频表单摄像头并执行QR扫描.我从SO和another code得到这个QR扫描代码,它只是从网络摄像头更新图像,而不是在tkinter标签上流 ...

  5. opencv python 调用摄像头_python+opencv实现摄像头调用的方法

    最近入了一块树莓派,想让其实现摄像头的调用,因此写下此博客备忘 一.树莓派网络的配置 首先,对树莓派进行网络配置,否则就无法进行软件的安装 我们知道,ifconfig命令可以修改ip地址.子网掩码等信 ...

  6. python的image读取的图片是什么类型的-opencv python 读取图像/显示图像/保存图像...

    以前也用过opencv, 不过都是按需使用, 掌握的知识很零散, 这次希望能够系统学习opencv-python 本文直接从Gui Features开始. 1 读取图片 使用cv2.imread()函 ...

  7. C++Opencv实时读取摄像头视频保存指定帧图片

    空格截图到指定文档 string writePath = "../temp/"; int main(int argc, char** argv){VideoCapture capt ...

  8. python读取时间序列csv可视化_Python获取时序数据并进行可视化分析

    本帖最后由 林宝宝 于 2019-7-31 17:29 编辑 问题导读: 1.获取第三方平台的接口数据的方法是什么? 2.怎么做数据清洗与合并?主要有数据类型转换.重新排序.索引重置.数据合并 3.时 ...

  9. opencv2 python 读取摄像头数据 修改视屏尺寸

    link '''Get video from camera ''' import cv2cap = cv2.VideoCapture(0) #视频进行读取操作以及调用摄像头 width = 640 r ...

最新文章

  1. Vue实现仿音乐播放器4-Vue-router实现音乐导航菜单切换
  2. 202701算法_冒泡排序
  3. InfoVista.NET 内部数据格式简介
  4. Java代码简化之lombok
  5. dot全称_游戏dot是什么
  6. 从今天起,TensorFlow 1.9开始支持树莓派了
  7. 【应用实例】基于Icepak油泵系统热仿真
  8. C语言自学之路六(循环语句详解)
  9. STM32的“GPU”——DMA2D实例详解
  10. Linux 下载百度网盘大文件
  11. web前端工程师等级分布
  12. Java 获取服务器ip地址
  13. Android解析包时出现问题
  14. WSL关闭与windows的互交互(解决PATH等环境变量问题
  15. SQL Server 学习5(随机数,整数,编号,序号)
  16. 自定义 C++ 和 CUDA 扩展
  17. kali初使用之zsh
  18. peel在Linux生成excel,zplane -
  19. php药膳 源码,-道家药膳
  20. 基于MATLAB的BPSK和QPSK调制的性能比较

热门文章

  1. 图解通信原理与案例分析-19:3G CDMA码分多址通信技术原理---码分多址、OVSF正交扩频码、伪随机码序列
  2. 《自己动手写操作系统》心得
  3. 自己动手写操作系统之环境构建篇
  4. TP LINK TL SG3452 CONSOLE 超级终端查管理IP命令
  5. 虫术python绝技_花鸟虫鱼
  6. 人脸识别系列(一):DeepFace
  7. 全国大学生数学建模竞赛2020A题炉温曲线MATLAB程序
  8. CSS从入门到喜欢,从喜欢到着魔
  9. 【修复日常bug】微信小程序cover-image不显示图片
  10. KITTI 数据集oxts 文件解析