暂无分类
暂无标签
发布于2020-11-29 09:58 阅读(568) 评论(0) 点赞(29) 收藏(1)
0
1
2
3
4
上个博客介绍了如何解决cv_bridge与python3的兼容问题,但在执行 talker.py 脚本的时候还是会报错误,那么原因是什么呢?
可以看到,他还是去默认存放cv_bridge的文件路径里面去找了
具体存放文件路径是 /opt/ros/melodic/lib/python2.7/dist-packages
那么我们编译好的文件存放到哪里了?
我们来找找,我们先切换到我们的工作空间
执行
source install/setup.bash --extend
然后进入python3,查找编译好的cv_bridge位置
python3
import cv_bridge
cv_bridge.__file__
如下图所示
可以看到,我们编译好的cv_bridge存放的路径是
/home/zhm/openSource/catkin_workspace/install/lib/python3/dist-packages
好了,现在我们找到了存放路径,来改 talker.py 和 listener.py 的代码,很简单,只需要3行代码。
具体的代码如下所示。
#!/usr/bin/env python
# license removed for brevity
import rospy
from sensor_msgs.msg import Image
import cv2
import sys
sys.path.remove('/opt/ros/melodic/lib/python2.7/dist-packages')
sys.path.append('/home/zhm/openSource/catkin_workspace/install/lib/python3/dist-packages')
from cv_bridge import CvBridge
def talker():
pub = rospy.Publisher('/tutorial/image', Image, queue_size=1)
rospy.init_node('talker', anonymous=True)
rate = rospy.Rate(30)
bridge = CvBridge()
Video = cv2.VideoCapture(0)
while not rospy.is_shutdown():
ret, img = Video.read()
cv2.imshow("talker", img)
cv2.waitKey(3)
pub.publish(bridge.cv2_to_imgmsg(img, "bgr8"))
rate.sleep()
if __name__ == '__main__':
try:
talker()
except rospy.ROSInterruptException:
pass
#!/usr/bin/python
import rospy
from sensor_msgs.msg import Image
import cv2
import sys
sys.path.remove('/opt/ros/melodic/lib/python2.7/dist-packages')
sys.path.append('/home/zhm/openSource/catkin_workspace/install/lib/python3/dist-packages')
from cv_bridge import CvBridge
def callback(imgmsg):
bridge = CvBridge()
img = bridge.imgmsg_to_cv2(imgmsg, "bgr8")
cv2.imshow("listener", img)
cv2.waitKey(3)
def listener():
# In ROS, nodes are uniquely named. If two nodes with the same
# node are launched, the previous one is kicked off. The
# anonymous=True flag means that rospy will choose a unique
# name for our 'listener' node so that multiple listeners can
# run simultaneously.
rospy.init_node('listener', anonymous=True)
rospy.Subscriber("/tutorial/image", Image, callback)
# spin() simply keeps python from exiting until this node is stopped
rospy.spin()
if __name__ == '__main__':
listener()
python3 talker.py
python3 listener.py
至此,我们的图像发布、订阅就写好了,写这个博客主要是因为网上的内容很杂乱,没有一篇具体的写 jetson nano 用 python 编写图像发布、订阅的博客,大家有问题评论区多多交流,欢迎大家赏脸~~
原文链接:https://blog.csdn.net/ABC__xiaoming/article/details/110248335
0
1
2
3
4
5
6
7
8
9
作者:天青色等烟雨
链接: https://www.pythonheidong.com/blog/article/636015/88d653246a15606d4734/
来源: python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系z452as@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!