Удаление фона с помощью opencv python - PullRequest
0 голосов
/ 06 мая 2020

Может ли кто-нибудь помочь мне с удалением фона с помощью OpenCV Python? Я пытаюсь использовать его для своего проекта OCR.

Ожидаемый образец изображения: sample_image

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Используйте функцию inRange для выбора:

import cv2 as cv
low_H = 0
low_S = 0
low_V = 220
high_H = 255
high_S = 30
high_V = 255
frame = cv.imread('EQsBj.jpg')
frame_HSV = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
frame_threshold = cv.inRange(frame_HSV, (low_H, low_S, low_V), (high_H, high_S, high_V))
cv.imwrite('out_3.png', frame_threshold)

Результат: enter image description here

1 голос
/ 06 мая 2020

Вы можете попробовать этот пример кода для удаления фона.

Чтение файла изображения

img = cv2.imread(Image1.jpg)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

Преобразовать в оттенки серого

img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

Применить пороговое значение

принимаем постоянный порог для простоты.

thresh = 127   
im_b = cv2.threshold(img_gray, thresh, 255, cv2.THRESH_BINARY)[1]

Находим контур фигуры

contours, hierarchy = cv2.findContours(image = im_b, mode = cv2.RETR_TREE, method = cv2.CHAIN_APPROX_SIMPLE)

Сортируем контуры

contours = sorted(contours, key = cv2.contourArea, reverse= True)

Маскирование объекта на основе контура

mask = np.ones(img.shape[:2], np.uint8)
mask.fill(255)
cv2.drawContours(mask, contours, contourIdx =0 , color =0, thickness = -1)
new_img = cv2.add(im_b, mask)
cv2.imwrite('masked.jpg',new_img)
cv2.imshow('masked.jpg')

Учитывая ваш образец изображения, я стремился вырезать единственный обнаруженный объект на основе контура.

Надеюсь, это поможет. Ура, приятель !!!

...