ROS操作系统 opencv-python读取摄像头+rviz可视化
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可视化相关推荐
- python读取摄像头数据_python 读取摄像头数据并保存的实例
python如何能采集多个摄像头的数据 .要用opencv吗?听说这个问题不好解决啊只有把自己过得像王后一样,才能吸引你想要的国王. 可以,用PYQT+CV2,四个USB连接成功,程序如下,UI要自己 ...
- opencv python 从摄像头获取视频、帧率、分辨率等属性设置和使用
opencv python 从摄像头获取视频.帧率.分辨率等属性设置和使用 文章目录: 1,为了获取视频,你应该创建一个 VideoCapture 对象.他的参数可以是设备的索引号,或者是一个视频文件 ...
- python读取摄像头数据_Opencv 读取摄像头数据 | 代码驱动科技
如果做监控,经常会遇到读取摄像头的数据.如何在python中读取摄像头数据,并显示呢? 双码流 一般高清摄像头产品编码器可同时产生两个不同的编码格式,统称主码流和子码流,双码流技术兼顾了高质量图像传输 ...
- python读取摄像头或者视频文件、并在gui中实时显示_python:tkinter显示来自网络摄像头的视频并执行QR扫描...
我一直在尝试创建一个tkinter顶级窗口,用于流式传输视频表单摄像头并执行QR扫描.我从SO和another code得到这个QR扫描代码,它只是从网络摄像头更新图像,而不是在tkinter标签上流 ...
- opencv python 调用摄像头_python+opencv实现摄像头调用的方法
最近入了一块树莓派,想让其实现摄像头的调用,因此写下此博客备忘 一.树莓派网络的配置 首先,对树莓派进行网络配置,否则就无法进行软件的安装 我们知道,ifconfig命令可以修改ip地址.子网掩码等信 ...
- python的image读取的图片是什么类型的-opencv python 读取图像/显示图像/保存图像...
以前也用过opencv, 不过都是按需使用, 掌握的知识很零散, 这次希望能够系统学习opencv-python 本文直接从Gui Features开始. 1 读取图片 使用cv2.imread()函 ...
- C++Opencv实时读取摄像头视频保存指定帧图片
空格截图到指定文档 string writePath = "../temp/"; int main(int argc, char** argv){VideoCapture capt ...
- python读取时间序列csv可视化_Python获取时序数据并进行可视化分析
本帖最后由 林宝宝 于 2019-7-31 17:29 编辑 问题导读: 1.获取第三方平台的接口数据的方法是什么? 2.怎么做数据清洗与合并?主要有数据类型转换.重新排序.索引重置.数据合并 3.时 ...
- opencv2 python 读取摄像头数据 修改视屏尺寸
link '''Get video from camera ''' import cv2cap = cv2.VideoCapture(0) #视频进行读取操作以及调用摄像头 width = 640 r ...
最新文章
- Vue实现仿音乐播放器4-Vue-router实现音乐导航菜单切换
- 202701算法_冒泡排序
- InfoVista.NET 内部数据格式简介
- Java代码简化之lombok
- dot全称_游戏dot是什么
- 从今天起,TensorFlow 1.9开始支持树莓派了
- 【应用实例】基于Icepak油泵系统热仿真
- C语言自学之路六(循环语句详解)
- STM32的“GPU”——DMA2D实例详解
- Linux 下载百度网盘大文件
- web前端工程师等级分布
- Java 获取服务器ip地址
- Android解析包时出现问题
- WSL关闭与windows的互交互(解决PATH等环境变量问题
- SQL Server 学习5(随机数,整数,编号,序号)
- 自定义 C++ 和 CUDA 扩展
- kali初使用之zsh
- peel在Linux生成excel,zplane -
- php药膳 源码,-道家药膳
- 基于MATLAB的BPSK和QPSK调制的性能比较