ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

opencv-day09

2022-05-18 14:33:02  阅读:197  来源: 互联网

标签:视频 day09 多媒体 写入 cv2 opencv fourcc 摄像头


1、视频录制
获取的视频帧,不论是从视频中获取的还是从多媒体文件中获取的,拿到的都是原始的数据,但如果要保存到多媒体文件中,数据帧需要是压缩后的数据,所以在VideoWrite进行write操作时除了将数据输出到文件中,还需要编码,将原始数据压缩之后写入文件中去。所以在写入时需要编码格式、帧率(一秒钟存多少帧)、分辨率(视频的宽和高是多少)。
通常写入数据是把数据写入缓存,在从缓存写入文件系统中,release也是类似此功能,释放资源,同时将缓存中的数据强制输出到磁盘中

import cv2

#创建fourcc
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
#创建videowriter对象为写多媒体文件,参数:输出文件,fourcc:多媒体文件格式,帧率,分辨率,分辨率需要和采集数据的摄像头的分辨率保持一致
vw = cv2.VideoWriter('/Users/lililiee/Desktop/out.mp4',fourcc,25,(1280,720))  #这里的文件名如果是avi就不会报错

#创建窗口
cv2.namedWindow('video',cv2.WINDOW_NORMAL)
cv2.resizeWindow('video',640,480)

#获取视频设备
cap = cv2.VideoCapture(0) #数字0代表从摄像头采集数据

while cap.isOpened(): #如果摄像头被打开,则进入循环,否则摄像头无法正常打开,进入循环无意义
    #从摄像头获取视频帧
    ret,frame = cap.read() #返回两个值,第一个为状态值,读到帧为true。第二个值为视频帧

    if ret==True: #读到了帧则展示,否则break
        #将视频帧在窗口显示
        cv2.imshow('video',frame)
        #在展示时重新将窗口大小进行调整,设为指定大小
        cv2.resizeWindow('video', 640, 360)
        vw.write(frame)  #将帧写入到多媒体文件

        #等待键盘事件,如果为,退出
        key = cv2.waitKey(30)  #这里的数字可以理解为帧与帧之间的间隔,如果一个视频是25帧,间隔设置为40以内,比如30会比较正常,否则会慢速播放
        if(key & 0xFF == ord('q')):
            break
    else:
        break

#释放VideoCapture视频设备
cap.release()
#释放多媒体资源
vw.release()
#释放窗口
cv2.destroyAllWindows()

标签:视频,day09,多媒体,写入,cv2,opencv,fourcc,摄像头
来源: https://www.cnblogs.com/lililiee/p/16284535.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有