iT邦幫忙

0

<解決>影像處理-讀取影片檔案錯誤

  • 分享至 

  • xImage

這隻程式原本是啟動自己的相機
cap = cv2.VideoCapture(0)
但現在我想要用讀取影片的方式

影片可以出來但一樣播完之後錯誤就出現了

https://ithelp.ithome.com.tw/upload/images/20210612/20133915DOaYw2B1yS.png

下面是程式碼跟要圖取的影像(.avi)資料夾位置

希望大師們可以幫幫忙 謝謝

有嘗試將路徑改成
cap = cv2.VideoCapture('E:\\Computer\\Final\\color_recognition-master\\src\\3.avi')

但跟上面一樣影片可以出來但一樣播完之後錯誤就出現了

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
we684123
iT邦研究生 4 級 ‧ 2021-06-13 00:29:21
while True:

    # Capture frame-by-frame
    (ret, frame) = cap.read()

改成這樣試試,應該可以(?

while cap.isOpened():

    # Capture frame-by-frame
    (ret, frame) = cap.read()

因為你是影片所以會有 "沒有下一個frame"(結尾) 的問題。
如果是攝影機,在你關閉攝影機前都不會遇到這個問。

0805cyc iT邦新手 4 級 ‧ 2021-06-13 16:45:35 檢舉

您好,將True改成cap.isOpened()後,確實沒有錯誤出現
但是執行得程式會在播完後沒有回應然後死當
請問有方法在影片播完後就自行結束程式嗎?謝謝

we684123 iT邦研究生 4 級 ‧ 2021-06-13 21:32:19 檢舉

改2個地方

cap = cv2.VideoCapture('3.avi')
frame_end = cap.get(cv2.CAP_PROP_FRAME_COUNT)
while cap.isOpened():
    (ret, frame) = cap.read()
    frame_count = cap.get(cv2.CAP_PROP_POS_FRAMES)
    if frame_count == frame_end:
        print("影片讀取完畢")
        break
0805cyc iT邦新手 4 級 ‧ 2021-06-14 00:09:19 檢舉

謝謝

我要發表回答

立即登入回答