【发布时间】:2021-12-11 12:49:23
【问题描述】:
我想在 ros kinetic 中使用 OpenCV 访问我的相机, 这是我的代码
#!/usr/bin/env python2.7
import rospy
from sensor_msgs.msg import Image
import cv2
from cv_bridge import CvBridge, CvBridgeError
rospy.init_node('opencv_example', anonymous=True)
bridge = CvBridge()
def show_image(img):
cv2.imshow("Image Window", img)
cv2.waitKey(3)
def image_callback(img_msg):
try:
cv_image = bridge.imgmsg_to_cv2(img_msg, "passthrough")
except CvBridgeError, e:
rospy.logerr("CvBridge Error: {0}".format(e))
show_image(cv_image)
sub_image = rospy.Subscriber("/raspicam_node/image/compressed", Image, image_callback)
cv2.namedWindow("Image Window", 1)
while not rospy.is_shutdown():
rospy.spin()
这段代码后我得到的只是一个空白图像窗口
在你问主题地址之前,我可以用这个命令rostrum image_view image_view image:=/raspicam_node/image/ _image_transport:=compressed 访问相机
目前,我正在与
- Ubuntu 16.04
- 罗斯动力学
- 打开 CV 3.3.1
【问题讨论】:
-
我不使用 ROS,但我想有几种可能性......图像永远不会到达,或者它确实到达并且它是空的,或者你没有正确显示它。我会添加一些调试语句,如
import numpy as np和print np.mean(cv_image),如果打印出来,则图像已到达,如果为零,则图像为空,如果非零,则显示有问题。跨度> -
@MarkSetchell 我使用 ROS,你基本上就在那里。 ROS 具有特定类型的压缩图像,并且 OP 正在使用它。它什么也没有显示,因为他们试图在 OpenCV 中将其用作普通的非压缩图像。
标签: python-2.7 opencv ros