opencv调用摄像头并显示,读取视频文件并显示,保存视频

参考链接: Getting Started with Videos

调用摄像头,并显示视频:

import numpy as np
import cv2 as cv

# cap = cv.VideoCapture(-1)
# cap = cv.VideoCapture(1)
cap = cv.VideoCapture(0)  # 传入一个设备索引,代表不同的摄像头,或者传入一个视频文件名
# cap = cv.VideoCapture('testVideo.mp4')

if not cap.isOpened():
    print("Cannot open camera")
    exit()

width = cap.get(cv.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv.CAP_PROP_FRAME_HEIGHT)
print('宽度和高度分别是:', width, height)  # 宽度和高度分别是: 640.0 480.0

ret = cap.set(cv.CAP_PROP_FRAME_WIDTH,320)  # 设定宽度
ret = cap.set(cv.CAP_PROP_FRAME_HEIGHT,240)  # 设定高度

while True:
    # Capture frame-by-frame
    ret, frame = cap.read()  # 返回True或者False,如果读取正确是True,可以用False来判断是否到达视频的末尾 
    # if frame is read correctly ret is True
    if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break
    # Our operations on the frame come here
    gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
    # Display the resulting frame
    cv.imshow('LinMaZi-frame-LinZuQuan', gray)  # 设定显示窗口标题文字
    if cv.waitKey(1) == ord('q'):  # 判断用户是否输入q键
        break

# When everything done, release the capture
cap.release()  # 释放资源
cv.destroyAllWindows()

读取视频文件并显示:

import numpy as np
import cv2 as cv
cap = cv.VideoCapture('毕业晚会.MP4')
# cap = cv.VideoCapture(0)
while cap.isOpened():
    ret, frame = cap.read()
    # if frame is read correctly ret is True
    if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break
    gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
    cv.imshow('frame', gray)
    if cv.waitKey(25) == ord('q'):  # 选择合适的刷新时间间隔,25毫秒还不错
        break
cap.release()
cv.destroyAllWindows()

调用摄像头并显示,保存为视频文件:

import numpy as np
import cv2 as cv
import time

cap = cv.VideoCapture(0)

# Define the codec and create VideoWriter object
fourcc = cv.VideoWriter_fourcc(*'XVID')  # 两者等效
# fourcc = cv.VideoWriter_fourcc('X','V','I','D')  # 两者等效

saveTime = time.strftime("%Yy-%mm-%dd@%Hh%Mm%Ss", time.localtime())
out = cv.VideoWriter('output_' + saveTime + '.mp4', fourcc, 20.0, (640,  480))  
# 参数说明 output file name, FourCC code, frames per second (fps), frame size

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break
    # frame = cv.flip(frame, 1)  # 左右横向翻转
    frame = cv.flip(frame, 0)  # 上下纵向翻转
    # write the flipped frame
    out.write(frame)
    cv.imshow('LinMaZi-frame-LinZuQuan', frame)
    if cv.waitKey(1) == ord('q'):
        break
# Release everything if job is finished
cap.release()
out.release()
cv.destroyAllWindows()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值