我有一些发票图像,其中一些文本重叠,这给以后的处理带来了麻烦,而我唯一的问题就是黑色文本。一些我想删除其他颜色的文本。
有什么办法可以做到这一点?
以图片为例。
我试图用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)
[具有多种颜色的图像] [1]
答案 0 :(得分:2)
文本更暗,饱和度更低。并建议@ J.D。 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)
(3)只需为S(HSV)
频道设置阈值:
th, threshed2 = cv2.threshold(s, 30, 255, cv2.THRESH_BINARY_INV)
结果:
演示代码:
# 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)
答案 1 :(得分:1)
转换为HSV colorspace使得选择颜色更加容易。
typedef struct TEmployee
{
struct TEmployee * m_Next;
struct TEmployee * m_Bak;
char * m_Name;
} TEMPLOYEE;
void *Malloc(size_t size)
{
void *ptr = NULL;
if ((ptr = malloc(size)) == NULL)
{
perror("alloc");
exit(1);
}
return ptr;
}
TEMPLOYEE *cloneList(TEMPLOYEE *src)
{
TEMPLOYEE *newList = (TEMPLOYEE *)Malloc(sizeof(TEMPLOYEE));
newList->m_Bak = NULL;
TEMPLOYEE *copy = newList;
TEMPLOYEE *current = src;
while (current != NULL)
{
newList->m_Name = strdup(current->m_Name); // need free
newList->m_Next = NULL;
if (current = current->m_Next)
{
newList->m_Next = (TEMPLOYEE *)Malloc(sizeof(TEMPLOYEE));
newList->m_Next->m_Bak = newList;
newList = newList->m_Next;
}
}
return copy;
}
要更改选定的黑色级别,请从upper_val中进行调整,该值当前设置为130。较高=允许使用较浅的阴影(称为“值”)。同样,当前值为100:低=允许较少的颜色(实际上是饱和度)。 了解有关HSV色彩空间here的更多信息。
我总是觉得下面的图片很有帮助。底部的“光盘”全是黑色的。当您在“值”中向上移动时,也会选择较亮的像素。饱和度低的像素保持灰色阴影直到白色(中间),饱和度高的像素变为彩色(边缘)。这就是为什么要调整这些值的原因。
编辑:正如@Silencer指出的那样,我的搜索范围已关闭。修复它。