那在ros下订阅摄像头画面并用opencv展示的python代码怎么写
时间: 2024-03-01 17:51:09 浏览: 206
python+opencv实现摄像头调用的方法
在ROS中,要订阅摄像头话题,需要使用rospy模块。以下是一个基本的Python代码示例,用于订阅ROS中的图像话题并使用OpenCV库将其显示出来:
```python
import rospy
import cv2
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
class ImageSubscriber:
def __init__(self):
self.bridge = CvBridge()
self.image_sub = rospy.Subscriber("camera_topic", Image, self.callback)
def callback(self, data):
try:
cv_image = self.bridge.imgmsg_to_cv2(data, "bgr8")
except Exception as e:
print(e)
else:
cv2.imshow("Image Window", cv_image)
cv2.waitKey(3)
if __name__ == '__main__':
rospy.init_node('image_subscriber', anonymous=True)
image_subscriber = ImageSubscriber()
try:
rospy.spin()
except KeyboardInterrupt:
print("Shutting down...")
cv2.destroyAllWindows()
```
在这个例子中,我们使用了ROS的`rospy`模块订阅了一个名为“camera_topic”的话题,该话题发布了摄像头的图像,然后使用`cv_bridge`模块将ROS消息转换为OpenCV格式,最后使用OpenCV的函数`cv2.imshow()`将图像显示在窗口中。
你需要将代码中的“camera_topic”改为你所使用的实际话题名称,以及更改`cv2.imshow()`函数中的窗口名称和等待时间,以适合你的实际需求。
阅读全文