首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用灰度图像创建BGR图像

使用灰度图像创建BGR图像
EN

Stack Overflow用户
提问于 2019-03-27 23:18:32
回答 1查看 163关注 0票数 0

相机提供灰度数据,而深度学习模型需要BGR。有没有可能通过使用opencv或numpy或其他工具“堆叠”灰度图像来创建人造bgr图像?

我使用的是其他人创建的两个ROS包。我尝试过以下几种方法:

已尝试更改模型以接受原始存储库所描述的灰度。

已尝试使用以下命令将灰度转换为bgr

代码语言:javascript
复制
np_image = cv2.cvtColor(np_image, cv2.COLOR_GRAY2BGR)

尝试创建一个由三倍图像组成的数组

代码语言:javascript
复制
np_image = np.array([np_image, np_image, np_image])

下面的代码检索图像

代码语言:javascript
复制
    def run(self):
        self._result_pub = rospy.Publisher('~result', Result, queue_size=1)
        vis_pub = rospy.Publisher('~visualization', Image, queue_size=1)
        sub = rospy.Subscriber('~input', Image,
                               self._image_callback, queue_size=1) 

        rate = rospy.Rate(self._publish_rate)
        while not rospy.is_shutdown():
            if self._msg_lock.acquire(False):
                msg = self._last_msg
                self._last_msg = None
                self._msg_lock.release()
            else:
                rate.sleep()
                continue

            if msg is not None:
                np_image = self._cv_bridge.imgmsg_to_cv2(msg, 
                    desired_encoding='mono8')
                #np_image = cv2.cvtColor(np_image, cv2.COLOR_GRAY2BGR) #(fail)
                np_image = np.array([np_image, np_image, np_image])
                # Run detection
                results = self._model.detect([np_image], verbose=0)
                result = results[0]
                result_msg = self._build_result_msg(msg, result)
                self._result_pub.publish(result_msg)
代码语言:javascript
复制
def _image_callback(self, msg):
        rospy.logdebug("Get an image")
        if self._msg_lock.acquire(False):
            self._last_msg = msg
            self._msg_lock.release()

我希望模型检索数据,评估它,并返回对象id和掩码。但是,我得到以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/home/riwo-rack-pc/ROS_Mask_rcnn/src/mask_rcnn_ros/nodes/mask_rcnn_node", line 196, in <module>
    main()
  File "/home/riwo-rack-pc/ROS_Mask_rcnn/src/mask_rcnn_ros/nodes/mask_rcnn_node", line 192, in main
    node.run()
  File "/home/riwo-rack-pc/ROS_Mask_rcnn/src/mask_rcnn_ros/nodes/mask_rcnn_node", line 116, in run
    results = self._model.detect([np_image], verbose=0)
  File "/home/riwo-rack-pc/ROS_Mask_rcnn/src/mask_rcnn_ros/src/mask_rcnn_ros/model.py", line 2333, in detect
    molded_images, image_metas, windows = self.mold_inputs(images)
  File "/home/riwo-rack-pc/ROS_Mask_rcnn/src/mask_rcnn_ros/src/mask_rcnn_ros/model.py", line 2236, in mold_inputs
    padding=self.config.IMAGE_PADDING)
  File "/home/riwo-rack-pc/ROS_Mask_rcnn/src/mask_rcnn_ros/src/mask_rcnn_ros/utils.py", line 409, in resize_image
    image, (round(h * scale), round(w * scale)))
  File "/home/riwo-rack-pc/.local/lib/python2.7/site-packages/scipy/misc/pilutil.py", line 490, in imresize
    imnew = im.resize(size, resample=func[interp])
  File "/home/riwo-rack-pc/.local/lib/python2.7/site-packages/PIL/Image.py", line 1806, in resize
    return self._new(self.im.resize(size, resample, box))
TypeError: integer argument expected, got float

我尽我所能地跟踪跟踪,但找不到引入浮动的点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-28 02:28:19

merged_image = cv2.merge((np_image, np_image, np_image))

应该能给你想要的东西。

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

https://stackoverflow.com/questions/55380727

复制
相关文章

相似问题

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