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 
    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

你可能感兴趣的:(深度学习)