Opencv 运动检测中的自动阈值

Opencv 运动检测中的自动阈值,opencv,computer-vision,Opencv,Computer Vision,我正在做一个需要检测运动的项目。为此,我目前正在opencv中使用BackgroundSubstractionNT类。上述算法返回一个二值图像,其中白色像素表示移动对象。我在定义一个阈值时遇到了一些问题,该阈值决定是否存在运动或只是噪声。目前,我使用的阈值为5%。是否有任何算法或流程可以自动调整该阈值或根据序列预测该阈值 下面是它的部分代码: def main(): minPixelStability = 30 useHistory = False maxPixe

我正在做一个需要检测运动的项目。为此,我目前正在opencv中使用BackgroundSubstractionNT类。上述算法返回一个二值图像,其中白色像素表示移动对象。我在定义一个阈值时遇到了一些问题,该阈值决定是否存在运动或只是噪声。目前,我使用的阈值为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摄像头 待检测对象=任何移动对象(活体和非活体)

欢迎提供任何帮助或建议


谢谢

请添加更多信息以供评论。您能否提及需要哪些其他信息?“我正在从事一个需要检测运动的项目”->这似乎非常广泛(传感器类型?分辨率?对象的类型和大小?)。您还应该添加用于实例化
backgroundsubstractionnt
class@GabrielDevillers谢谢你的建议。我用一段代码更新了这个问题。如果你还需要什么,请告诉我。