首页 > 解决方案 > Opencv在图像上绘制黑色像素

问题描述

我有一个类似于的输入图像

在此处输入图像描述

我指的是: Canny边缘检测后如何填补字母的空白

我想在这张图片上绘制黑色像素。上述网址上建议的解决方案是首先使用找到所有黑色像素

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 中的数据)。

标签: python-3.xopencvocrtesseract

解决方案


在答案中指出,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()

推荐阅读