这是为实现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
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