cv2.error: OpenCV(4.2.0) ..\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'



考虑到可能是视频末尾读取帧不正确导致的。
查看变量管理器发现,在播放时按下’q’键退出,控制台不会报错,ret变量值为True;播放到末尾时,控制台报错,ret变量值为False。
到这里问题的原因就比较明朗了——ret(return value缩写)是一个布尔值,表示当前这一帧是否获取正确。视频播放到最后一帧后,程序并没有停止读取文件,而是继续读取(此时视频文件内已经没有数据供程序读取了),读不出数据,自然就报错了。找到了问题,解决方案也就有了:读完最后一帧以后,ret == False时跳出while循环,结束程序就行了

import cv2
cap = cv2.VideoCapture('E:/pycharm/deep_learning/output.avi')  # 精确到根目录
while(cap.isOpened()):
    ret, frame = cap.read()
    # 第一个参数ret 为True 或者False,代表有没有读取到图片
    # 第二个参数frame表示截取到一帧的图片
    if ret == True:
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        cv2.imshow('frame', gray)
    else:
        break
    if cv2.waitKey(30) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM