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