Я использую opencv (cv2 module) в python для распознавания объектов в видео. В каждом кадре я хочу извлечь конкретную область aka, контур. После обучения с opencv docs, у меня есть следующий фрагмент кода:Как маскировать видеокадр с использованием контуров с opencv в python
# np is numpy module, contours are expected results,
# frame is each frame of the video
# Iterate through the contours.
for contour in contours:
# Compute the bounding box for the contour, draw
# it on the frame, and update the text.
x, y, w, h = cv2.boundingRect(contour)
# Find the mask and build a histogram for the object.
mask = np.zeros(frame.shape[:2], np.uint8)
mask[y:h, x:w] = 255
masked_img = cv2.bitwise_and(frame, frame, mask = mask)
obj_hist = cv2.calcHist([masked_img], [0], None, [256], [0, 256])
Однако, когда я использую matplotlib
показать masked_img
, он возвращает темное изображение. obj_hist
имеет только один элемент с номером больше 0
, который является первым. Что не так?
Пожалуйста, прочитайте [ask] – boardrider
@boardrider Я его отредактировал, надеюсь, это может помочь вам понять мой вопрос :-) – user4394476
Вы проверили, что 'contours' содержит что-нибудь? –