Ros学习:解决cv_bridge和python3不兼容的问题以及虚拟环境调用cv_bridge问题

news/2024/9/22 22:54:30/

参考:极简方案写在前面:可以解决90% cv_bridge与python3适配的问题。 如果解决了您的问题,点个赞呗 一、问题1,rospy安装当主函数使用python3,并加载使用ros时,会报错。因为一般的ros库基于python2的。报错如下: Traceback…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/652106267

参考方案之前在使用ubuntu16.04时发现ROS下的cv_bridge类仅支持python2,在做项目时又需要在python3中进行,尝试把这个坑填了一下,供大家借鉴。(当然现在貌似ubuntu20.04 ROS都支持python3了) 1. 创建工作空间mkdir cat…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/407517632网络上很多文章,都是写的noetic以下版本,安装cv_bridge插件,出现的种种问题,这是由于,ros在之前的版本对python3的支持不够好,noetic版本开始,加强了对于python3的支持。

废话不多说,直接开始

基础环境,ubuntu20.04,Ros(noetic,划重点),不知道怎么安装Ros,请参考鱼香Ros一键安装脚本

1. 创建工作空间

mkdir -p ~/testVision_OpenCV/srccd testVision_OpenCV/src

2.编译代码并安装

git clone https://github.com/ros-perception/vision_opencv.git src/vision_opencv#进入到clone的项目
cd vision_opencv#切换到对应的分支,重要!!!
git checkout -b noetic remotes/origin/noeticcd ~/testVision_OpenCV && catkin_make开始执行编译,不出问题直接可以编译成功

3.虚拟环境调用(不用虚拟环境,可以忽略这一步)

virtualenv pyenv -p /usr/bin/python3source pyenv/bin/activate#虚拟环境内安装依赖,装完后,可以愉快的在虚拟环境中进行开发了
pip install catkin-tools
pip install rospkg

4.测试代码(读取video并发布)

python"># coding=utf-8
import rospy
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
# import customCvBridge as CvBridge
import cv2def video_publisher():# 初始化ROS节点rospy.init_node('video_publisher', anonymous=True)# 创建图像发布者image_pub = rospy.Publisher('rgb_topic', Image, queue_size=10)# # 创建CvBridge对象bridge = CvBridge()# 打开视频文件video = cv2.VideoCapture('./test.mp4')# 检查视频是否成功打开if not video.isOpened():rospy.logerr('无法打开视频文件')return# 循环读取视频帧并发布rate = rospy.Rate(30)  # 设置发布频率为30帧/秒while not rospy.is_shutdown():ret, frame = video.read()if ret:# 将帧转换为ROS图像消息image_msg = bridge.cv2_to_imgmsg(frame)# 发布图像消息image_pub.publish(image_msg)else:# 视频结束时退出循环breakrate.sleep()# 关闭视频文件video.release()if __name__ == '__main__':try:video_publisher()except rospy.ROSInterruptException:pass


http://www.ppmy.cn/news/1462933.html

相关文章

02. Flink 快速上手

02. Flink 快速上手 1、创建项目导入依赖 pom文件&#xff1a; <properties><flink.version>1.17.0</flink.version> </properties><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java<…

海康威视硬盘录像机NVR连接公网视频监控平台,注册失败,抓包发现有403 forbidden的问题解决

目录 一、问题描述 二、问题定位 1、查看DVR的配置 2、查看需要使用的端口是否开放 3、查看日志 4、抓包 &#xff08;1&#xff09;找出错误 &#xff08;2&#xff09;查看数据包内容 三、问题分析 1、国标28181中的域的概念 2、域应该如何定义 &#xff08;1&am…

诺兰电影欣赏笔记

2012&#xff1a;蝙蝠侠&#xff1a;黑暗骑士崛起&#xff08;Batman 3: The Dark Knight Rises&#xff09; 播放平台&#xff1a;优酷

民国漫画杂志《时代漫画》第18期.PDF

时代漫画18.PDF: https://url03.ctfile.com/f/1779803-1248612707-27e56b?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络&#xff01;

持续总结中!2024年面试必问 20 道 Redis面试题(五)

上一篇地址&#xff1a;持续总结中&#xff01;2024年面试必问 20 道 Redis面试题&#xff08;四&#xff09;-CSDN博客 九、Redis的同步机制了解么&#xff1f; Redis 的同步机制是其复制策略的核心部分&#xff0c;确保数据在主节点&#xff08;master&#xff09;和从节点…

C++ socket epoll IO多路复用

IO多路复用通常用于处理单进程高并发&#xff0c;在Linux中&#xff0c;一切皆文件&#xff0c;一个socket连接会对应一个文件描述符&#xff0c;在监听多个文件描述符的状态应用中epoll相对于select和poll效率更高 epoll本质是系统在内核维护了一颗红黑树&#xff0c;监听的文…

软件构造复习1

一、软件构造的多维度视图&#xff1a; 共有三个维度&#xff1a;1.按阶段划分&#xff1a;构造时/运行时视图&#xff0c;2.按动态性划分&#xff1a;时刻/阶段视图&#xff0c;3.按构造对象层次划分&#xff1a;代码/构件视图 具体可如图所示&#xff08;图片来自PPT&#…

两种单例模式的区别

文章目录 看两个栗子传统指针版单例模式现代静态变量版单例模式 分析结论 看两个栗子 传统指针版单例模式 class Singleton { private:// 私有化构造函数Singleton() {}// 禁止拷贝构造函数Singleton(const Singleton&) delete;// 禁止拷贝赋值操作Singleton& opera…