1.调用摄像头拍照保存
# coding:utf-8
import cv2
# cap = cv2.VideoCapture(1, cv2.CAP_DSHOW)
cap = cv2.VideoCapture(0)
#检查摄像头是否打开,值为TRUE or FALSE
flag = cap.isOpened()
index = 1
while (flag):
ret, frame = cap.read()
#flip(mat,mat,int)第三个参数:1左右翻 0 上下翻 -1 对角翻
frame = cv2.flip(frame,1)
cv2.imshow("Capture_Paizhao", frame)
k = cv2.waitKey(1) & 0xFF
if k == ord(' '): # 按下空格键,进入下面的保存图片操作(其他键位需要切换中英文和大小写太麻烦,直接空格简单)
cv2.imwrite("C:/Users/Administrator/Desktop/New_Study/Camera/" + str(index) + ".jpg", frame)
print("save" + str(index) + ".jpg successfuly!")
print("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-")
index += 1
elif k == 27: # 按下Esc键,程序退出(Esc的ASCII值是27,即0001 1011)
break
cap.release() # 释放摄像头
cv2.destroyAllWindows()# 释放并销毁窗口
2.调用摄像头录制视频
使用cv2.VideoCapture()创建视频对象,然后在循环中一帧帧显示图像。
参数传入数字时,代表打开摄像头,传入本地视频路径时,表示播放本地视频
cap.get(propId)获取视频属性,cap.set(propId,value)设置视频属性
cv2.VideoWriter()创建视频写入对象,用来录制/保存视频
import cv2
capture = cv2.VideoCapture(0)
# 定义编码方式并创建VideoWriter对象
fourcc = cv2.VideoWriter_fourcc(*'MJPG')# *'XVID'
outfile = cv2.VideoWriter("C:/Users/Administrator/Desktop/New_Study/Video/Video_Result/output11.avi", fourcc, 25., (640, 480))
while(capture.isOpened()):
ret, frame = capture.read()
frame = cv2.flip(frame,1)
if ret:
outfile.write(frame) # 写入文件
cv2.imshow('frame', frame)
if cv2.waitKey(1) == 27: # 按下Esc键,程序退出(Esc的ASCII值是27,即0001 1011)
break
else: break
capture.release()
cv2.destroyAllWindows()
3.将视频分解成帧
获取FPS(每秒传输帧数(Frames Per Second))
fps = cap.get(cv2.CAP_PROP_FPS)
获取总帧数
totalFrameNumber = cap.get(cv2.CAP_PROP_FRAME_COUNT)
#播放视频并计算总帧数和FPS
# -*- coding: utf-8 -*-
import cv2
# 读取视频
cap = cv2.VideoCapture("C:/Users/Administrator/Desktop/New_Study/Video/Video_Result/output.avi")
# 获取FPS(每秒传输帧数(Frames Per Second))
fps = cap.get(cv2.CAP_PROP_FPS)
# 获取总帧数
totalFrameNumber = cap.get(cv2.CAP_PROP_FRAME_COUNT)
print(fps)
print(totalFrameNumber)
# 当前读取到第几帧
COUNT = 0
# 若小于总帧数则读一帧图像
while COUNT < totalFrameNumber:
# 一帧一帧图像读取
ret, frame = cap.read()
# 把每一帧图像保存成jpg格式(这一行可以根据需要选择保留)
cv2.imwrite('C:/Users/Administrator/Desktop/New_Study/Video/Video_Result/FPS/'+str(COUNT) + '.jpg', frame)
# 显示这一帧地图像
cv2.imshow('video', frame)
COUNT = COUNT + 1
# 延时一段33ms(1s➗30帧)再读取下一帧,如果没有这一句便无法正常显示视频
cv2.waitKey(33)
cap.release();
特别注明:本文属于Python OpenCV学习笔记,不以盈利为目的,纯手工码字不容易,若整理的笔记中,对您有所助益,麻烦点个赞或者收藏,万分感谢!如有构成侵权的地方,请联系作者删除,谢谢合作!