使用Python openCV PIL将黑色改为白色而不是将白色改为黑色

时间:2017-07-17 15:22:58

标签: python opencv

我尝试使用cv2或PIL在python中使用opencv将黑色像素更改为白色。

原始图片:

enter image description here

这是我的代码:

import cv2
import numpy as np

frame = cv2.imread("numptest/captcha.png")
cv2.imshow('frame',frame)

lower_black = np.array([0,0,0])
upper_black = np.array([1,1,1])
black_mask = cv2.inRange(frame, lower_black, upper_black)
cv2.imshow('mask0',black_mask)
cv2.waitKey()

结果如下:

enter image description here

虽然我希望它看起来像这样:

enter image description here

我也尝试过这段代码,它确实保留了这些矩形内部的内容,但仅适用于RGB 255 255 255,而我需要它才能适用于更广泛的RGB。

from PIL import Image
import numpy as np

im = Image.open('numptest/captcha.png')
im = im.convert('RGBA')
data = np.array(im)   
black_areas = (red == 0) & (blue == 0) & (green == 0)
data[..., :-1][black_areas.T] = (255, 255, 255)

im2 = Image.fromarray(data)
im2.show()'

这是第二个代码的结果:

enter image description here

所以我不知道,也许最好是这些代码的某些组合,我只是不太懂得如何在第二个代码中使用inRange,这可能会解决我的问题。

1 个答案:

答案 0 :(得分:1)

Actauly我在写这个问题时找到了回答我自己的问题。我只是修改了第二个代码。

这一行:

       black_areas = (red == 0) & (blue == 0) & (green == 0)

这一行:

    black_areas = (red < 70) & (blue < 70) & (green < 70)

结果如下:

enter image description here