我正在研究一个需要检测运动的项目。我目前正在为此使用opencv中的BackgroundSubstractionCNT类。上面的算法返回一个二进制图像,其中白色像素代表运动对象。我在定义一个阈值时遇到了麻烦,该阈值决定是否有运动还是仅仅是噪音。目前,我使用的阈值为5%。是否有任何算法或过程可以自动调整该阈值或根据序列预测该阈值?
下面是它的部分代码:
def main():
minPixelStability = 30
useHistory = False
maxPixelStability = 60
isParallel = False
bs_cnt = cv2.bgsegm.createBackgroundSubtractorCNT(minPixelStability, useHistory, maxPixelStability, isParallel)
output_frame = bs_cnt.apply(current_frame)
这是检测功能:
def detect_motion(output_frame):
total_white_pixels = np.sum(output_frame > 100)
# print(total_white_pixels)
motion = None
if(total_white_pixels > 0.05*output_frame.shape[0]*output_frame.shape[1]):
motion = True
else:
motion = False
图像分辨率= 300 x 200
传感器类型= USB摄像头
要检测的物体=任何运动物体(有生命和无生命)
任何帮助或建议都将受到赞赏。
谢谢