python - [OpenCV Videocapture]为什么不继续阅读?

标签 python numpy opencv image-processing

该代码显示正确的图像,但是在图像“帧”播放后显示错误消息。所以我无法获得“res”图像
它只显示“无对象文件”错误消息。
我应该修复哪一部分才能使其正常工作?

import cv2
import numpy as np

cap = cv2.VideoCapture('ObjectTrack.mp4')

while cap.isOpened():
    ret, frame = cap.read()
    
    if not ret:
        print("No Object Files")
        break
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    lower_orange = np.array([100,200,200])
    upper_orange = np.array([140,255,255])

    mask_orange = cv2.inRange(hsv, lower_orange, upper_orange)

    res = cv2.bitwise_and(frame,frame,mask = mask_orange)

    cv2.imshow('frame',frame)
    cv2.imshow('res',res)
    
    if cv2.waitKey(50) & 0xFF == ord('q'):
        break

cap.release()        
cv2.destroyAllWindows()

最佳答案

您的错误背后的原因是该框架为None(Null)。您的代码将输入此if

if not ret:
    print("No Object Files")
    break
然后退出while循环(while cap.isOpened(): ...)。
只需更改缩进以及if条件
像这样:
while cap.isOpened():
    ret, frame = cap.read()

    if ret: # if frame is not None:

        hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

        lower_orange = np.array([100, 200, 200])
        upper_orange = np.array([140, 255, 255])

        mask_orange = cv2.inRange(hsv, lower_orange, upper_orange)

        res = cv2.bitwise_and(frame, frame, mask=mask_orange)

        cv2.imshow('frame', frame)
        cv2.imshow('res', res)

        if cv2.waitKey(50) & 0xFF == ord('q'):
            break

cap.release()
cv2.destroyAllWindows()
原因进一步讨论here

关于python - [OpenCV Videocapture]为什么不继续阅读?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64165130/

相关文章:

python - OS X + Qt : How to capture all key-press events in the entire GUI?

python - 提取 numpy 结构化数组的最高值

python - 在Stata中高效处理矩阵

opencv - 当相机仅向前/向后移动时如何找到视差

opencv - 将三分之一的视频流转换为灰度并显示

python - 生日提醒应用: function doesn't display

python - 查找两个字符串共享的所有n字长的子字符串的最大长度

Python 2D 列表性能,没有 numpy

python - 在 Windows 上安装 NumPy

python - 检测图像上其他物体上附着的小方 block