将黑色更改为白色但不是白色使用cv2或PIL在Python中使用opencv尝试将黑色像素更改为白色。使用Python openCV PIL
原始图片:
这里是我的代码:
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()
结果看起来是这样的:
,而我想它看像这样:
我自己也尝试这个代码,这确实保留什么的矩形内,但仅限于究竟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()'
这里是第二码结果:
所以我不知道,也许最好将这些代码的组合,我真的不知道如何在第二个代码中使用INRANGE ,那可能会解决我的问题。
如果它是一个灰度图像,为什么不把它作为一个灰度图像和改变下面的一切,可以说10(几乎黑色)到255(白色)。在范围内,您必须使用下限和上限来定义哪些颜色处于有效范围内,然后将其用作蒙版并将该区域设为白色。在[本教程](http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html)中,它们向您展示了如何按颜色过滤,通过更高的界限来使用某些东西接近黑色(10,10,10),下限仅为黑色(0,0,0),因为黑色并非总是纯正的。 – api55