cv2.waitKey()

是一个键盘绑定函数。该函数等待任何键盘事件指定的毫秒。如果您在这段时间内按下任何键,程序将继续运行。

import cv2
img = cv2.imread('./Images//1.JPG',0)  #读取图片
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27:         # 等待ESC退出
    cv2.destroyAllWindows()
elif k == ord('s'): # 等待关键字,保存和退出
    cv2.imwrite('messigray.png',img)
    cv2.destroyAllWindows()
cv2.destroyAllWindows()

cv2.destroyAllWindows()

破坏我们创建的所有窗口。如果要销毁任何特定的窗口,请使用函数 cv.destroyWindow()在其中传递确切的窗口名称作为参数。

cv2.VideoCapture()

创建VideoCapture对象来获取摄像头(数字)或者视频文件(地址)。

import cv2 as cv
cap = cv.VideoCapture(0)  #调用摄像头 地址则为视频

if not cap.isOpened():
    print("Cannot open camera")
    exit()
while True:
    # 逐帧捕获
    ret, frame = cap.read()  #返回Ture/False 和 True时读取的帧在
    # 如果正确读取帧,ret为True
    if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break
        # 我们在框架上的操作到这里
    # frame = cv.cvtColor(frame, cv.COLOR_BGR2GRAY) #转为灰度图
    # 显示结果帧
    cv.imshow('frame', frame)
    if cv.waitKey(1) == ord('q'):
        break

cap.release()
cv.destroyAllWindows()

cap.get(propId) 获得视频相关属性,cap.set(propId,value)用于修改属性。

cap.get(cv.CAP_PROP_FRAME_WIDTH) #获得宽
cap.get(cv.CAP_PROP_FRAME_HEIGHT) #获得长
CAP.get(cv.CAP_PROP_FRAME_COUNT)   #获得视频帧数
ret = cap.set(cv.CAP_PROP_FRAME_WIDTH,320)  #修改视频宽分辨率为320

保存视频

捕捉视频,一帧一帧处理后保存视频。对于图像,只需使用 cv.imwrite()。首先需要创建一个 VideoWriter 对象,传递帧率的数量和帧大小,颜色标志。
从摄像机捕捉画面,沿垂直方向翻转并保存:

import cv2 as cv

cap = cv.VideoCapture(0)
# 定义编解码器并创建VideoWriter对象
out = cv.VideoWriter('output.mp4',cv.VideoWriter_fourcc(*'XVID'),20.0,(640,480))  #参数:地址,FourCC代价,分辨率,(视频宽高)
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print('can not find frame')
        break
    frame = cv.flip(frame,1)
    #写入翻转的框架
    out.write(frame)
    cv.imshow('frame',frame)
    if cv.waitKey(1) == ord('q'):
        break
cap.release()
out.release()
cv.destroyAllWindows()