2020疫情期间没事,研究了python的工具库numpy、pandas、matplotlib、opencv,人工智能、数据分析等知识;其中opencv也是非常好用的库,对图像处理很方便,在人工智能方面也有很高的使用频率,下面分享一下opencv调用摄像头,保存视频的。当然你得有摄像头。
1、首先要安装opencv
pip install opencv-python #这种安装方式默认安装国内可能网速很慢
#国内基本都是用国内几大源地址安装,例如
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python #清华的下载速度就很快
2、导入库
import cv2 as cv
import os #用于处理文件
import time
3、调用摄像头
cap = cv.VideoCapture(0) #0 代表 系统第一个摄像头,如果有多个摄像头,使用1,2...
f = cap.isOpened()
4、显示视频
while f:
ret, frame = cap.read()
if not ret:
print("Can't receive frame (stream end?). Exiting ...")
break
frame = cv.flip(frame, 1) #翻转 一下
cv.imshow('frame', frame) #显示
if cv.waitKey(1) == ord('q'): #按 Q键 退出
break
5、创建视频流文件
width = cap.get(cv.CAP_PROP_FRAME_WIDTH) #获取摄像头width
height = cap.get(cv.CAP_PROP_FRAME_HEIGHT) #获取摄像头height
size = (int(width),int(height))
fourcc = cv.VideoWriter_fourcc(*'DIVX') # 定义编解码器并创建VideoWriter对象
# 参数还可以 DIVX,XVID,MJPG,X264,WMV1,WMV2。
path = os.getcwd() #获取当前路径
vpath = path + '\Video' #视频目录
if not(os.path.exists(vpath)):
#print('n') #没有就建一个
os.makedirs(vpath)
#创建VideoWriter,用于写视频
out = cv.VideoWriter( vpath + '\\' + time.strftime(r"%Y-%m-%d_%H-%M-%S",time.localtime()) + '.mp4', fourcc, 24.0, size)
6、写入视频
if not(out.isOpened()):
print('out is not opened',out) #写入文件没打开,这里opencv不报错,咱们给出提示,直接退出
else:
while f:
ret, frame = cap.read()
if not ret:
print("Can't receive frame . Exiting ...")
break
frame = cv.flip(frame, 1) #翻转一下
# 写翻转的框架
out.write(frame)
cv.imshow('frame', frame) #显示一下图像
if cv.waitKey(1) == ord('q'):
break
7、最后销毁
# 完成工作后释放所有内容
cap.release()
out.release()
cv.destroyAllWindows()
总结:将代码融合一下就可以调取摄像头了,同时还可以保存视频流。这种视频流没有声音,后期再完善。