opencv-python 截取視頻片段並顯示

這是爲實現ABLR模型結果可視化寫的一個demo。環境要求如下:

python3

opencv-python4.1.0

代碼如下:

#coding=utf-8
import cv2
print(cv2.__version__)
#打開原完整視頻
cap = cv2.VideoCapture(r'E:\深度學習\0605\src\model\s13-d21.avi')#打開視頻
if not cap.isOpened():#判斷文件是否存在
    print ("could not open :",fn)
    sys.exit() 
length = cap.get(cv2.CAP_PROP_FRAME_COUNT)#獲得該視頻的幀數
h  = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
w  = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
fps = int(cap.get(cv2.CAP_PROP_FPS))#獲得該視頻的幀率
print(fps)
print(length)
size = (w,h)
print(size)
#獲取視頻片段,保存
videoWriter =cv2.VideoWriter(r'E:\深度學習\0605\src\model\s13-d21_predict.avi',cv2.VideoWriter_fourcc('X','V','I','D'),fps,size)
i = 0
while True:
    success,frame = cap.read()
    if success:
        i += 1
        print('i = ',i)
        if(i>=1500 and i <= 2500):
            
            videoWriter.write(frame)
    else:
        print('end')   
        break

#讀取視頻片段文件 並添加文字後顯示
cap2 = cv2.VideoCapture(r'E:\深度學習\0605\src\model\s13-d21_preditct.avi')#打開視頻
#獲取視頻幀率
fps_video = cap2.get(cv2.CAP_PROP_FPS)
#獲取視頻寬度
frame_width = int(cap2.get(cv2.CAP_PROP_FRAME_WIDTH))
#獲取視頻高度
frame_height = int(cap2.get(cv2.CAP_PROP_FRAME_HEIGHT))
while(True):
    #逐幀捕捉
    ret,frame = cap2.read()
    #添加文字字幕
    if ret == True:
        cv2.putText(frame, 'hello world', (50,150), cv2.FONT_HERSHEY_COMPLEX, 5, (0, 255, 0), 12)
    #show
    cv2.namedWindow('frame', 0)#自適應調整視頻大小
    cv2.imshow('frame',frame)
    if cv2.waitKey(25)& 0xFF == ord('q'):
        break


cap2.release()
cv2.destroyAllWindows()

最後有一個報錯(但是貌似對結果沒有影響):

 File "E:/深度學習/0605/src/model/video_cut.py", line 52, in <module>
    cv2.imshow('frame',frame)
cv2.error: OpenCV(4.1.0) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:352: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

這個報錯好像是因爲視頻路徑中包含有中文。

 

另外在程序編寫中出現的一些問題:

1.TypeError 

cv2.VideoWriter需要的寬高和幀率都爲整數。

2.默認顯示視頻很大,需要加入以下代碼來自適應調整視頻大小。

cv2.namedWindow('frame', 0)

參考鏈接:

https://blog.csdn.net/zong596568821xp/article/details/84522055

https://blog.csdn.net/weixin_41010198/article/details/88535234

https://blog.csdn.net/u012348774/article/details/78255130

https://www.cnblogs.com/zhenglisai/p/9888096.html

https://blog.csdn.net/shangxiaqiusuo1/article/details/84888408

https://blog.csdn.net/menghaocheng/article/details/80108960

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章