版权声明:转载请联系 :[email protected] https://blog.csdn.net/weixin_40928253/article/details/89786725
主要使用的函数是:cv2.VideoCapture(),cv2.VideoWrite()。
一、用摄像头捕获视频
我们经常需要使用摄像头捕获实时图像。OpenCV 为这种应用提供了一个 非常简单的接口。让我们使用摄像头来捕获一段视频,并把它转换成灰度视频 显示出来。
废话不多说,直接上代码。(注释已经很详细了,说多了无益。:( )
import cv2
#从摄像头读取图像
if __name__ == "__main__":
# 获取摄像头0(本电脑摄像头)
cap = cv2.VideoCapture(0)
while (True):
# 逐帧捕获
ret, frame = cap.read()
# 将摄像头获取的图像转为灰度图像
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 展示灰度图片
cv2.imshow('frame', gray)
# 按下ESC键退出
k = cv2.waitKey(1)
if k & k == 27:
break
cap.release()
cv2.destroyAllWindows()
二、播放文件中的视频
与从摄像头中捕获一样,你只需要把设备索引号改成视频文件的名字。在 播放每一帧时,使用 cv2.waiKey() 设置适当的持续时间。如果设置的太低视 频就会播放的非常快,如果设置的太高就会播放的很慢(你可以使用这种方法 控制视频的播放速度)。通常情况下 25 毫秒就可以了。
#从文件中读取图像并显示
if __name__ == "__main__":
def ReadVideo(self):
cap = cv2.VideoCapture('1.avi')
while (cap.isOpened()):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame', gray)
k = cv2.waitKey(1)
if k & k == 27:
break
cap.release()
cv2.destroyAllWindows()
三、从摄像头中读取视频显示并保存为output.avi
贴上代码,过程就不演示了。(这属于入门级别的操作,代码注释很详细)
#从摄像头中读取图像并保存为output.avi
if __name__ == "__main__":
cap = cv2.VideoCapture(0)
#生成的视频格式设置为.avi(OpenCV只支持avi的格式,而且生成的视频文件不能大于2GB,而且不能添加音频)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
# cv2.VideoWriter(视频名, 格式, 码率(fps), 帧的尺寸等参数)
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
while (cap.isOpened()):
ret, frame = cap.read()
if ret == True:
#进行图像翻转, 1水平翻转、 0垂直翻转、-1水平垂直翻转
frame = cv2.flip(frame,1)
out.write(frame)
cv2.imshow('frame', frame)
#按下esc键退出
if cv2.waitKey(1) & cv2.waitKey(1) == 27:
break
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
okk!!!