Извлечь ROI нескольких объектов и сделать цвет RGB черным, кроме нужных объектов - PullRequest
0 голосов
/ 20 июня 2019

У меня есть RGB и маска изображения, где присутствуют несколько объектов.Желаемый объект имеет тот же цвет (в моем случае это красный).Я хочу извлечь область интереса из моих желаемых объектов и, наконец, сделать черный цвет RGB-изображения, за исключением желаемого объекта.

До сих пор я преобразовал изображение маски в серый цвет, а затем выполнил настройку порога и применил такженайти контурную функцию используя OpenCV.Но это только обнаружение ROI одного объекта.Здесь я даю RGB-изображение и МАС-изображение

Код, который я использовал

import numpy as np
import cv2
import os

lit = 'RGB_image_path/rgb_image.png'
mask = 'mask_image_path/maks_image.png'

lit_image = cv2.imread(lit)
mask_image = cv2.imread(mask)

imgray=cv2.cvtColor(mask_image,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,1)
image, contours, hierarchy =  cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

if len(contours)>0:
    print('length is: ',len(contours))
    cnt = contours[0]
    x,y,w,h = cv2.boundingRect(cnt)

    draw_rec_lit_image=cv2.rectangle(lit_image,(x,y),(x+w,y+h),(0,0,255),2)


if cv2.waitKey() == ord('q'): #press q to close the output image window
        cv2.destroyAllWindows()

Тем не менее у меня нетИдея, как сделать черный цвет в изображении RGB, поэтому здесь не пробовал ни один код

пороговое изображение и обнаруженный ROI в моем случае далиВот.Пороговое значение хорошее, но определение ROI неверно, выполняется только для одного объекта.

Мой желаемый результат --- *

Требуется 1 и конечное желание

Для размещения этого вопроса я сделал эти нужные изображения с помощью Paint

...