栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

opencv+python获取摄像头视频流并翻转保存文件

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

opencv+python获取摄像头视频流并翻转保存文件

一:显示即可
参考链接:简书

代码:

import cv2
import numpy as np

# 调用usb摄像头
camera_id = 0
cap = cv2.VideoCapture(camera_id)

# 显示
while True:
    ret, frame = cap.read()
    if ret == True:
        new_video = cv2.flip(frame, 0)
        #视频旋转cv2.flip(frame, 1)第一个参数表示要旋转的视频
        # 第二个参数表示旋转的方向,0表示绕x轴旋转,大于0的数表示绕y轴旋转,小于0的负数表示绕x和y轴旋转。

    cv2.imshow("window_before", frame)
    cv2.imshow("window_after", new_video)
    # 如果输入 esc 退出程序
    boardkey = cv2.waitKey(1) & 0xFF
    if boardkey == 27:
        break
# 关闭
cap.release()
cv2.destroyAllWindows()

输出结果:
before:

after:参数设置为0,绕x轴旋转

after:参数设置为180,绕y轴旋转

after:参数设置为-180,绕x轴和y轴旋转

二、保存视频
参考链接:保存视频

代码:

import cv2
import os  #用于处理文件
import time
import numpy as np

# 调用usb摄像头
camera_id = 0
cap = cv2.VideoCapture(camera_id)

width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)  # 获取摄像头width
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)  # 获取摄像头height
size = (int(width), int(height))

fourcc = cv2.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_before = cv2.VideoWriter(vpath + '\' + time.strftime(r"%Y-%m-%d_%H-%M-%S", time.localtime()) + '_before.mp4', fourcc, 24.0, size)
out_after = cv2.VideoWriter(vpath + '\' + time.strftime(r"%Y-%m-%d_%H-%M-%S", time.localtime()) + '_after.mp4', fourcc, 24.0, size)
# 显示
while True:
    ret, frame = cap.read()
    if ret == True:
        new_video = cv2.flip(frame, -180)
        #视频旋转cv2.flip(frame, 1)第一个参数表示要旋转的视频
        # 第二个参数表示旋转的方向,0表示绕x轴旋转,大于0的数表示绕y轴旋转,小于0的负数表示绕x和y轴旋转。
    out_before.write(frame)
    out_after.write(new_video)
    cv2.imshow("window_before", frame)
    cv2.imshow("window_after", new_video)
    # 如果输入 esc 退出程序
    boardkey = cv2.waitKey(1) & 0xFF
    if boardkey == 27:
        break


# 关闭
cap.release()
out_before.release()
out_after.release()
cv2.destroyAllWindows()

输出结果:

生成两段视频,after是before的翻转视频。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887026.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号