我想在图像中选择多个感兴趣区域是否可以这样做。
我想仅在我选择的区域进行运动检测,以下任何理论都可以解决我的问题,但不知道如何实现其中任何一个: -
屏蔽图像中不是ROI的区域
创建多个ROI图片后,如何添加这些图片,以便所有这些投资回报率都可以在原始位置,并且剩余区域会被屏蔽
答案 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)以获取更多信息。