這是爲實現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