Python OpenCV-摄像头的调用

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()# 释放并销毁窗口

Python OpenCV-摄像头的调用_第1张图片

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()

Python OpenCV-摄像头的调用_第2张图片

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-摄像头的调用_第3张图片


特别注明本文属于Python OpenCV学习笔记,不以盈利为目的,纯手工码字不容易,若整理的笔记中,对您有所助益,麻烦点个赞或者收藏,万分感谢!如有构成侵权的地方,请联系作者删除,谢谢合作!

你可能感兴趣的:(OpenCV,Python,图像处理,OpenCV)