jia*_*hou 3 text opencv image colors
我有一些发票图片有一些文字重叠,这给以后的处理带来了一些麻烦,而且我只有黑色的文字。有些我想删除其他颜色的文本。
有没有办法实现这一目标?
附上图片作为示例。
我试图用opencv解决它,但我仍然无法解决这个问题:
import numpy as np import cv2
img = cv2.imread('11.png')
lower = np.array([150,150,150])
upper = np.array([200,200,200])
mask = cv2.inRange(img, lower, upper)
res = cv2.bitwise_and(img, img, mask=mask)
cv2.imwrite('22.png',res)
Run Code Online (Sandbox Code Playgroud)
[多色图像][1]
文本更暗,饱和度更低。正如@JD 所建议的那样,HSV色彩空间很好。但是他的范围是错误的。
在 OpenCV 中,H 的范围在 [0, 180],而 S/V 的范围在 [0, 255]
这是我去年制作的颜色图,我认为它很有帮助。

(1) 使用 cv2.inRange
(2) 只是阈值V(HSV)通道:
th, threshed = cv2.threshold(v, 150, 255, cv2.THRESH_BINARY_INV)
Run Code Online (Sandbox Code Playgroud)
(3) 对S(HSV)通道进行阈值处理:
th, threshed2 = cv2.threshold(s, 30, 255, cv2.THRESH_BINARY_INV)
Run Code Online (Sandbox Code Playgroud)
结果:
演示代码:
# 2018/12/30 22:21
# 2018/12/30 23:25
import cv2
img = cv2.imread("test.png")
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h,s,v = cv2.split(hsv)
mask = cv2.inRange(hsv, (0,0,0), (180, 50, 130))
dst1 = cv2.bitwise_and(img, img, mask=mask)
th, threshed = cv2.threshold(v, 150, 255, cv2.THRESH_BINARY_INV)
dst2 = cv2.bitwise_and(img, img, mask=threshed)
th, threshed2 = cv2.threshold(s, 30, 255, cv2.THRESH_BINARY_INV)
dst3 = cv2.bitwise_and(img, img, mask=threshed2)
cv2.imwrite("dst1.png", dst1)
cv2.imwrite("dst2.png", dst2)
cv2.imwrite("dst3.png", dst3)
Run Code Online (Sandbox Code Playgroud)