Избавляемся от строк в OpenCV-Python - PullRequest
0 голосов
/ 08 мая 2018

INPUT

TARGET OUTPUT

MY WORK

Like Iпреобразовал мой исходный ввод в изображение цветового пространства HSV и применил функцию INRANGE, нашел зеленые и синие линии и теперь я хочу избавиться от них и хочу, чтобы изображение выглядело как на выходе ... как мне теперь избавитьсялиний и замените их цветом фона ??

Фрагмент кода:

import cv2 as cv
import numpy as np
img= cv.imread('C:\input.png',1)

hsv=cv.cvtColor(img,cv.COLOR_BGR2HSV)
lower_green = np.array([30,70,20])
upper_green = np.array([70,255,255])
lower_blue = np.array([95, 110, 20])
upper_blue = np.array([135, 255, 255])
mask = cv.inRange(hsv, lower_green , upper_blue)
res = cv.bitwise_and(img,img, mask= mask)
cv.imwrite("out2.jpg", res)

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Делая что-то, как сказал @ jeru-luke, результат будет таким:

import cv2 as cv
import numpy as np

img = cv.imread('z12.png', 1)


hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
lower_green = np.array([30, 70, 20])
upper_green = np.array([70, 255, 255])
lower_blue = np.array([95, 110, 20])
upper_blue = np.array([135, 255, 255])
mask = cv.inRange(hsv, lower_green, upper_blue)

mask = cv.bitwise_not(mask)
bk = np.full(img.shape, 255, dtype=np.uint8)  # white bk

fg_masked = cv.bitwise_and(img, img, mask=mask)

# get masked background, mask must be inverted
mask = cv.bitwise_not(mask)
bk_masked = cv.bitwise_and(bk, bk, mask=mask)

# combine masked foreground and masked background
final = cv.bitwise_or(fg_masked, bk_masked)
cv.imwrite('out_put.png', final)
cv.imshow('final', final), cv.waitKey(0)

enter image description here

0 голосов
/ 08 мая 2018

Вот быстрое и грязное решение.

  1. Создание маски из порогового изображения вручную, содержащего линии (маска 1)

enter image description here

  1. Также создайте двоичное инвертированное изображение этой маски (маска 2)

enter image description here

  1. Маска с изображением рубашки с маской 1

enter image description here

  1. Окрасьте изображение выше, используя маску 2

enter image description here

Решение определенно можно улучшить, выполнив морфологические операции с маской для удаления линий. Поделись своими мыслями

...