代码拉取完成,页面将自动刷新
import cv2
import os
import numpy as np
VIDEO_PATH = 'Test_Video/person_video.mp4'
RESULT_PATH = 'result1.mp4'
#指定多边形的顶点坐标
polygonPoints=np.array([[410,150],[810,150],[510,300],[110,300]],dtype=np.int32)
if __name__ == '__main__':
if not os.path.exists(VIDEO_PATH):
print(f'视频文件不存在: {VIDEO_PATH}')
exit()
capture = cv2.VideoCapture(VIDEO_PATH)
if not capture.isOpened():
print('无法打开视频文件')
exit()
fps=capture.get(cv2.CAP_PROP_FPS) #获取帧率
frame_width=int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)) #获取宽度
frame_height=int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT)) #获取高度
print(f'帧率:{fps},宽度:{frame_width},高度:{frame_height}')
videoWriter=None
while True:
success,frame=capture.read() #读取视频中的一帧
if not success:
print('无法读取帧,可能是视频结束或读取失败')
break
#在视频中间画一条线段
cv2.line(frame,pt1=(0,int(frame_height/2)),pt2=(int(frame_width),int(frame_height/2)),color=(0,0,255),thickness=3)
#画一个多边形
cv2.polylines(frame,pts=[polygonPoints],isClosed=True,color=(0,0,255),thickness=2)
#生成一张同样大小的空图片
mask=np.zeros_like(frame)
#填充多边形
cv2.fillPoly(mask,pts=[polygonPoints],color=(0,255,255))
#融合两张图片
frame=cv2.addWeighted(frame,0.7,mask,0.3,0)
#保存处理好的视频
if videoWriter is None:
fourcc=cv2.VideoWriter_fourcc('m','p','4','v')
videoWriter=cv2.VideoWriter(RESULT_PATH,fourcc,fps,(int(frame_width),int(frame_height)))
videoWriter.write(frame)
if frame is not None:
cv2.imshow(winname='window', mat=frame)
#参数如果设置得太小,视频就会播放得很快
if cv2.waitKey(1) & 0xFF == ord(' '):
break
print('视频播放结束')
#释放内存资源
capture.release()
videoWriter.release()
cv2.destroyAllWindows()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。