Поиск цвета в обнаруженном контуре OpenCV python
Приветствую всех разработчиков компьютерного зрения! Мне нужна ваша подсказка - вектор, который бы привел меня к решению моей задачи.
Непосредственно сама задача: имеется код (смотреть ниже), который находит объекты при помощи метода вычитания фона. Мне необходимо найти определенный цвет в заданном контуре, который будет задаваться нижней и верхней границей цвета формата HSV.
Код:
import cv2 as cv
cap = cv.VideoCapture('videos/1.mp4')
fgbg = cv.bgsegm.createBackgroundSubtractorMOG()
while True:
ret, frame = cap.read()
if frame is None:
break
fgmask = fgbg.apply(frame)
cv.imshow('FG MASK Frame', fgmask)
keyboard = cv.waitKey(30)
if keyboard == 'q' or keyboard == 27:
break
cap.release()
cv.destroyAllWindows()
Вопрос: как найти цвет внутри этого контура?
Ответы (1 шт):
Автор решения: Max Gacrux
→ Ссылка
import cv2 as cv
cap = cv.VideoCapture('videos/5.mp4')
fgbg = cv.bgsegm.createBackgroundSubtractorMOG()
while True:
ret, frame = cap.read()
if frame is None:
break
fgmask = fgbg.apply(frame)
contours, hierarchy = cv.findContours(fgmask, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
for pic, contour in enumerate(contours):
# area = cv2.contourArea(contour)
perimeter = cv.arcLength(contour, True)
x, y, w, h = cv.boundingRect(contour)
col = cv.mean(frame, fgmask)
print(int(col[0]))
if perimeter > 400:
M = cv.moments(contour)
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])
print(f"{cX}:{cY}")
cv.circle(frame, (cX, cY), 3, (255, 255, 255), -1)
# cv.putText(frame, "color", (x, y), frame.FONT_HERSHEY_SIMPLEX, 0.1, (int(col[0]), int(col[1]), int(col[2])))
cv.rectangle(frame, (x, y), (x + w, y + w), (int(col[0]), int(col[1]), int(col[2])), 2)
print(cv.mean(frame, fgmask))
cv.imshow("Frame", frame)
keyboard = cv.waitKey(30)
if keyboard == 'q' or keyboard == 27:
break
cap.release() cv.destroyAllWindows()
