Как вырезать выделение на изображениях Opencv - PullRequest
0 голосов
/ 01 июня 2019

Подскажите, как вырезать выделенную область в Opencv. На данный момент область выделена, и я хочу, чтобы все было удалено. Белый фон.

Снимок экрана (https://i.stack.imgur.com/jVcUf.jpg)

import cv2
import numpy as np
img = cv2.imread("57.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)


th, threshed = cv2.threshold(gray, 100, 255, 
cv2.THRESH_OTSU|cv2.THRESH_BINARY_INV)
morphed = cv2.morphologyEx(threshed, cv2.MORPH_OPEN, np.ones((2,2)))

cnts = cv2.findContours(morphed, cv2.RETR_EXTERNAL, 
cv2.CHAIN_APPROX_SIMPLE[-2]

nh, nw = img.shape[:2]
for cnt in cnts:
    x,y,w,h = bbox = cv2.boundingRect(cnt)
    if h < 0.4 * nh:
        continue
    cv2.rectangle(img, (x,y), (x+w, y+h), (255, 0, 255), 1, cv2.LINE_AA)

cv2.imshow("gray", img) 

Все, что я мог сделать, я пытался выделить контуры всех объектов и удалить все, что меньше основного текста (нужно оставить только 9 цифр)

1 Ответ

0 голосов
/ 02 июня 2019

Если у вас уже обнаружены прямоугольники, вы можете заполнить прямоугольник белым фоном и для этого вы должны изменить параметр прямоугольника (-1)

cv2.rectangle(img, (x,y), (x+w, y+h), (255, 255, 255), -1, cv2.LINE_AA)

Исходное изображение enter image description here

Обнаружено изображение с прямоугольниками

enter image description here

Изображение на белом фоне

enter image description here

Мой код:

import cv2
import numpy as np

img = cv2.imread("numeros_romanos.jpg")
img = cv2.resize(img, (1024, 800), interpolation = cv2.INTER_AREA)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

th, threshed = cv2.threshold(gray, 100, 255, cv2.THRESH_OTSU|cv2.THRESH_BINARY_INV)

im2, cnts, hierarchy = cv2.findContours(threshed, cv2.RETR_EXTERNAL, 
cv2.CHAIN_APPROX_SIMPLE)

for cnt in cnts:
    x,y,w,h = bbox = cv2.boundingRect(cnt)
    cv2.rectangle(img, (x,y), (x+w, y+h), (255, 255, 255), -1, cv2.LINE_AA)

cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...