我输入的图片类似于
我指的是: How to fill the gaps in letters after Canny edge detection
我想在此图像上绘制黑色像素。针对上述网址提出的解决方案是,首先使用
查找所有黑色像素import matplotlib.pyplot as pp
import numpy as np
image = pp.imread(r'/home/cris/tmp/Zuv3p.jpg')
bin = np.all(image<100, axis=2)
我的问题是请问我是否在忽略所有其他颜色通道的同时在图像上绘制了黑色像素(数据存储在bin中)。
答案 0 :(得分:2)
在回答中指出,np.all(image<100, axis=2)
用于选择R,G和B都小于100的像素,这基本上是分色。就个人而言,我喜欢为此使用HSV色彩空间。
结果:
注意:如果要改善绿色字母,最好为此创建一个单独的蒙版,并调整绿色的hsv值。
代码:
import numpy as np
import cv2
# load image
img = cv2.imread("img.jpg")
# Convert BGR to HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# define range of black color in HSV
lower_val = np.array([0,0,0])
upper_val = np.array([179,255,127])
# Threshold the HSV image to get only black colors
mask = cv2.inRange(hsv, lower_val, upper_val)
# invert mask to get black symbols on white background
mask_inv = cv2.bitwise_not(mask)
# display image
cv2.imshow("Mask", mask_inv)
cv2.imshow("Img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()