Opencv строит черные пиксели на изображении - PullRequest
0 голосов
/ 04 марта 2019

У меня есть входное изображение, похожее на

enter image description here

Я имею в виду: Как заполнить пропуски в письмах после обнаружения Canny edge

Я хочу нанести черные пиксели на это изображение.Предложенное решение по указанному выше URL-адресу: сначала найдите все черные пиксели, используя

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)

Мой вопрос: как я могу нанести эти черные пиксели (данные, хранящиеся в корзине) на изображение, игнорируя все другие цветовые каналы?

1 Ответ

0 голосов
/ 04 марта 2019

В ответе указано, что np.all(image<100, axis=2) используется для выбора пикселей, где R, G и B все ниже 100, что в основном является цветовым разделением.Лично для этого мне нравится использовать цветовое пространство HSV.

Результат:

enter image description here

Примечание: если вы хотите улучшитьзелеными буквами, для этого лучше всего создать отдельную маску и настроить значения 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()
...