выбор нескольких ROI на изображении

привет, ребята, я использую opencv 2.4 с python 2.7 на ubuntu14.04

Я хочу выбрать несколько областей интереса на изображении, возможно ли это сделать.

Я хочу выполнять обнаружение движения только в той области, которую я выбрал для этого, поэтому любая из следующих теорий может решить мою проблему, но не знаю, как реализовать любую из них: -

  1. Замаскируйте область изображения, которая не является ROI

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


person vasu gupta    schedule 29.06.2016    source источник
comment
в c++ самый простой способ работать с ROI — это cv::Rect регионы и подизображения. Не уверен, существуют ли они в python/numpy opencv   -  person Micka    schedule 29.06.2016


Ответы (1)


Да, это возможно. Основная идея решения заключается в создании маски и установке ее на 0 везде, где вы не хотите, чтобы трекер движения отслеживал.

Если вы используете numpy, вы можете создать маску и установить области, которые вы не хотите использовать детектором, равными нулю. (Аналогично cv::Rect(start.col, start.row, numberof.cols, numberof.rows) = 0 в С++)

В python с помощью numpy вы можете создать маску примерно так:

import numpy as np  

ret, frame = cap.read()
if frame.ndim == 3
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
elif frame.ndim == 4
    gray = cv2.cvtColor(frame, cv2.COLOR_BGRA2GRAY)
else:
    gray = frame

# create mask
mask = np.ones_like(gray)
mask[start_row:end_row, start_col:end_col] = 0
mask[another_starting_row:another_ending_row, another_start_col:another_end_col] = 0
# and so on you can create your own mask
# use for loops to create specific masks 

Это немного грубое решение, но оно сделает свою работу. проверьте документацию numpy (PDF) для больше информации.

person Tomar    schedule 29.06.2016