首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ROS旋律& OpenCV - CompressedImage非出版

ROS旋律& OpenCV - CompressedImage非出版
EN

Stack Overflow用户
提问于 2018-08-04 19:11:42
回答 1查看 1.7K关注 0票数 2

我对罗斯很陌生。我正在玩集成OpenCV和ROS。我使用的代码来自ROS教程中关于将ROS消息转换为CV::mat和back的教程。

我订阅了由raspicam节点发布的主题/raspicam_node/image/compressed。我没有问题得到这个话题,把它转换成CV:mat,然后用OpenCV修改它。第32行打开一个窗口并向我显示修改后的CV:mat图像。

我的问题出现在36线。我可以使用rostopic list看到这个主题,但是当我使用echo时,什么都不会出现。如果我使用rqt_image_view,也是一样的。

对我错过了什么有什么想法吗?谢谢!

代码语言:javascript
复制
#!/usr/bin/env python

from __future__ import print_function

import roslib
roslib.load_manifest('comp_vision')
import sys
import rospy
import cv2
from std_msgs.msg import String
from sensor_msgs.msg import Image, CompressedImage
from cv_bridge import CvBridge, CvBridgeError


class ImageConverter:

    def __init__(self):
        self.image_pub = rospy.Publisher("modified_image", CompressedImage, queue_size=10)
        self.brige = CvBridge()
        self.image_sub = rospy.Subscriber("/raspicam_node/image/compressed", CompressedImage, self.callback)

    def callback(self,data):
        try:
            cv_image = self.brige.compressed_imgmsg_to_cv2(data, "passthrough")
        except CvBridgeError as e:
            print(e)

        (rows, cols, channels) = cv_image.shape
        if cols > 60 and rows > 60:
            cv2.circle(cv_image, (50,50), 10, 255)

        cv2.imshow("Image Window", cv_image)
        cv2.waitKey(3)

        try:
            self.image_pub.publish(self.brige.cv2_to_compressed_imgmsg(cv_image))
        except CvBridgeError as e:
            print(e)


def main(args):
    ic = ImageConverter()
    rospy.init_node("image_converter", anonymous=True)
    try:
        rospy.spin()
    except KeyboardInterrupt:
        print("shutting down")
    cv2.destroyAllWindows()


if __name__ == '__main__':
    main(sys.argv)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-11 10:29:43

如果您检查rostopic echo /modified_image,您可以看到您的主题已成功发布。

如果您调用已发布的主题rqt_image_viewmodified_image/compressed将显示它。

来自传输wiki

将其发布在表单image_raw/压缩的主题上。然后,任何使用image_transport的ROS节点都可以在传输压缩的情况下订阅image_raw,就像在发布服务器端使用image_transport一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51688799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档