穿过了群山一座座 2023-08-09 18:59 采纳率: 50%
浏览 3

写一个目标跟踪算法遇到的问题

我用的是opencv3.4.1和python3.6
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
while cap.isOpened():
    diff = cv2.absdiff(frame1, frame2)
    mask = filter_img(diff)
    contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    for contour in contours:
        (x,y,w,h) = cv2.boundingRect(contour)
        if cv2.contourArea(contour) <200:
            continue
        cv2.rectangle(frame1, pt1=(x,y), pt2=(x+w, y+h), color=(0, 255, 0), thickness=2)


运行结果及详细报错内容

运行的话只有第一帧的画面。然后就报错退出了

img

我的解答思路和尝试过的方法

我的思路是会不会opencv不能用absdiff()

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-09 21:04
    关注

    【以下回答由 GPT 生成】

    问题可能是由于absdiff()函数的使用导致的。absdiff()函数用于计算两个图像的差异。但是在你的代码中,两个图像的来源并没有被展示出来。我推测可能是由于图像源的问题导致只显示第一帧画面。

    为了解决这个问题,你可以尝试以下步骤:

    1. 确保摄像头或视频文件被正确地打开并能够捕获实时的图像帧。

    2. 确保frame1frame2分别是连续的两帧图像。你可以通过读取摄像头或者视频文件的帧来获得这两个图像。

    3. 检查filter_img()函数是否正确地对差异图像进行过滤处理。你可以通过打印输出mask图像来检查是否正确生成。

    4. 确保cv2.findContours()函数能够正确地检测到差异图像中的轮廓。你可以通过打印输出contours来检查是否正确获取到了轮廓。

    5. 确保cv2.rectangle()函数能够正确地在frame1上绘制矩形框。你可以通过打印输出frame1图像来检查是否正确绘制了矩形框。

    下面是一种修改后的代码示例,用于帮助你解决问题:

    while cap.isOpened():
        ret, frame1 = cap.read()
        if not ret:
            break
    
        ret, frame2 = cap.read()
        if not ret:
            break
    
        diff = cv2.absdiff(frame1, frame2)
        mask = filter_img(diff)
        cv2.imshow('Mask', mask)
    
        contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
        for contour in contours:
            if cv2.contourArea(contour) < 200:
                continue
            (x, y, w, h) = cv2.boundingRect(contour)
            cv2.rectangle(frame1, pt1=(x, y), pt2=(x+w, y+h), color=(0, 255, 0), thickness=2)
    
        cv2.imshow('Result', frame1)
        if cv2.waitKey(1) == ord('q'):
            break
    
    cap.release()
    cv2.destroyAllWindows()
    

    请尝试使用以上修改后的代码,并确保摄像头或视频文件被正确地打开,以及filter_img()函数能够正确地处理差异图像。如果问题仍然存在,请提供更多的代码和错误信息,以便我们诊断问题。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 8月9日