【问题标题】:How to save image using opencv after done this code as shown below?完成此代码后如何使用opencv保存图像,如下所示?
【发布时间】:2019-05-10 10:19:28
【问题描述】:

我曾使用大津的方法遮住云层。在这种情况下,面具是红色的。当我运行代码时,图表显示红色蒙版,但是当我尝试将其保存到文件夹时,蒙版变为蓝色。谁能帮助我做错了什么?

 def show_mask(mask, img_array, title='', mask_color=(255, 0, 0)):

            display_image = img_array.copy()
            display_image[mask != 0] = mask_color

            path1="D:Datasets/satellite2/croppedred"

            plt.imshow(display_image)
            cv2.imwrite(os.path.join(path1,img),display_image)
            #display_image.save(os.path.join(path1,img))
            plt.title(title)
            plt.axis('off')
            plt.show()  
show_mask(mask_otsu_clean, img_array, title='Otsu grayscale thresholding with morphological cleanup')

【问题讨论】:

  • 图片的颜色顺序是什么?如果这是您所看到的,听起来它可能是 BGR 而不是 RGB。试试display_image[mask != 0] = (0,0,255)
  • BGR。如果这种情况下的订单是 BGR,会发生什么?
  • 好吧,当您分配mask_color 时,虽然您认为它会覆盖红色通道,但颜色通道顺序是相反的,因此您需要更改遮罩顺序
  • 哦,你是对的。非常感谢!

标签: python opencv matplotlib mask


【解决方案1】:

默认情况下,OpenCV 将图像的颜色通道顺序视为 BGR 而不是 RGB,这就是您看到蓝色蒙版的原因。

所以你需要把你的面具改成这个

mask_color = (0, 0, 255)

然后它将正确的颜色值应用到正确的颜色通道

【讨论】:

  • 哦,难怪我得到了相反的颜色。非常感谢您的帮助:)
  • 哦,好的,注意到了。再次感谢
猜你喜欢
  • 1970-01-01
  • 2016-11-15
  • 2021-12-27
  • 2018-02-12
  • 2023-04-01
  • 1970-01-01
  • 2021-02-12
  • 1970-01-01
  • 2012-05-22
相关资源
最近更新 更多