选择图像中的多个ROI

时间:2016-06-29 07:46:31

标签: python-2.7 opencv roi

嘿伙计们我在ubuntu14.04上使用opencv 2.4和python 2.7

我想在图像中选择多个感兴趣区域是否可以这样做。

我想仅在我选择的区域进行运动检测,以下任何理论都可以解决我的问题,但不知道如何实现其中任何一个: -

  1. 屏蔽图像中不是ROI的区域

  2. 创建多个ROI图片后,如何添加这些图片,以便所有这些投资回报率都可以在原始位置,并且剩余区域会被屏蔽

1 个答案:

答案 0 :(得分:0)

是的,可以这样做。解决方案背后的主要思想是创建一个遮罩,并将其设置为0,无论您何时不想跟踪运动跟踪器。

如果您使用numpy,则可以创建遮罩并将不希望探测器使用的区域设置为零。 (类似于c ++中的cv::Rect(start.col, start.row, numberof.cols, numberof.rows) = 0

在使用numpy的python中,您可以创建一个掩码,有点像这样:

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)以获取更多信息。