1.读取并显示视频
代码速记:
- cv2.VideoCapture()
- cap.isOpened()
- cap.open()
- cap.get()
- cap.set()
- cap.read()
- cap.release()
实战:
def capture(self):
#【1】创建Capture对象
cap = cv2.VideoCapture(0)#参数为设备索引号或视频文件。0为笔记本内置摄像头
if cap.isOpened():#检验摄像头是否打开
print("镜头是打开的")
else:
cap.open(0)#打开摄像头
print(cap.get(0))#参数是0-18的整数,每个数代表视频的一个属性
w=cap.get(3)
h=cap.get(4)
ret=cap.set(3,320)#用set函数来设置某些属性值
ret=cap.set(4,240)
while (True):
#【2】一帧一帧捕获
ret, frame = cap.read()#帧读取正确就返回True。最后检查返回值看是否到视频结尾
# 【3】把该帧图像转为灰度图像
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 【4】显示结果
cv2.imshow('frame', gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 【5】释放Capture对象
cap.release()
cv2.destroyAllWindows()
2.保存视频
代码速记:
- cv2.VideoWriter_fourcc()
- cv2.VideoWriter()
- cv2.flip()
- out.write()
实战:
def save_video(self):
cap = cv2.VideoCapture(0)
# 定义codec,创建VideoWriter对象
fourcc = cv2.VideoWriter_fourcc(*'XVID')
#FourCC 就是一个4 字节码,用来确定视频的编码格式。
out = cv2.VideoWriter('../res_images/output.avi', fourcc, 20.0, (640, 480))
while (cap.isOpened()):
ret, frame = cap.read()
if ret == True:
frame = cv2.flip(frame, 0)
# 写入flip的帧
out.write(frame)
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()
FourCC 就是一个4 字节码,用来确定视频的编码格式。可用的编码列表可以从fourcc.org查到。这是平台依赖的。
- In Fedora: DIVX, XVID, MJPG, X264, WMV1, WMV2. (XVID is more preferable. MJPG results in high size video. X264 gives very small size video)
- In Windows: DIVX (More to be tested and added)
FourCC 码以下面的格式传给程序,以MJPG 为例:
cv2.VideoWriter_fourcc('M','J','P','G')或者cv2.VideoWriter_fourcc(*'MJPG)。
本文介绍了如何使用OpenCV进行视频的基本操作,包括读取视频并显示,以及保存视频。在读取视频时,涉及了VideoCapture的使用,如isOpened(), open(), get(), set()和read()方法。而在保存视频部分,讲解了VideoWriter_fourcc()用于设置编码格式,以及VideoWriter()用于创建输出视频对象,并使用flip()和write()方法处理帧数据。"
125803907,14742467,React子组件向父组件传递数据:回调函数实战,"['react.js', 'javascript', '前端']


被折叠的 条评论
为什么被折叠?



