【问题标题】:How to convert a Binary Image to Grayscale and RGB using python?如何使用 python 将二进制图像转换为灰度和 RGB?
【发布时间】:2018-05-30 02:54:10
【问题描述】:

我正在研究从皮肤病变图像中去除毛发。有没有办法将二进制转换回rgb?

原图:

面具图片:

我只想用原图还原黑色区域。

【问题讨论】:

  • 你为什么要首先这样做?
  • 我想从皮肤病变图像中去除毛发,我做了一定的模糊和过滤并将图像转换为二进制。所以我想加载没有头发的原始图像。
  • 你上传二进制图像和原始图像,很多事情取决于你的二进制图像的格式,无论是前景是白色背景是白色还是其他方式。
  • 听起来你不想convert任何东西,你想用一张图片来mask另一张。
  • 我要获取二值图像黑色区域中存在的原始区域

标签: python opencv image-processing


【解决方案1】:

据我所知,二进制图像以灰度形式存储在 opencv 值 1-->255 中。

要创建“虚拟”RGB 图像,您可以执行以下操作: rgb_img = cv2.cvtColor(binary_img, cv.CV_GRAY2RGB)

我称它们为“虚拟”,因为在这些图像中,红色、绿色和蓝色的值是相同的。

【讨论】:

  • 我使用 PIL 进行二值化,使用 opencv 进行过滤。
【解决方案2】:

我更新了the Daniel Tremer's answer

import cv2
opencv_rgb_img = cv2.cvtColor(opencv_image, cv2.COLOR_GRAY2RGB)

opencv_image 将是二维矩阵,如 [width, height] 因为二进制。
opencv_rgb_img 将是三维矩阵,如 [width, height, color channel] 因为 RGB。

【讨论】:

    【解决方案3】:

    类似这样,但您的蒙版尺寸错误(200x200 像素),因此与您的图像(600x450 像素)不匹配:

    #!/usr/local/bin/python3
    from PIL import Image
    import numpy as np
    
    # Open the input image as numpy array
    npImage=np.array(Image.open("image.jpg"))
    # Open the mask image as numpy array
    npMask=np.array(Image.open("mask2.jpg").convert("RGB"))
    
    # Make a binary array identifying where the mask is black
    cond = npMask<128
    
    # Select image or mask according to condition array
    pixels=np.where(cond, npImage, npMask)
    
    # Save resulting image
    result=Image.fromarray(pixels)
    result.save('result.png')
    

    【讨论】:

    • 是的,但是我想把头发去掉。
    • Mmmm...如果您在 OpenCV 中进行所有重型图像处理(而不是像我那样在 NumPy 中),我建议您改进那里的蒙版以隐藏毛发,然后使用我的代码。
    猜你喜欢
    • 1970-01-01
    • 2012-08-25
    • 2014-02-26
    • 2014-12-22
    • 2013-12-16
    • 1970-01-01
    • 2019-12-01
    相关资源
    最近更新 更多