У меня есть 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