火速网站建设,代理公司经营范围,免费1级做爰片在线观看网站,邢台经济开发区上篇文章我们学习了图片的数据采集#xff0c;今天主要了解一下视频数据采集的方法。视频是由一系列图像构成的#xff0c;其中每一张图片就是一帧。视频数据采集方法通常有自动图像采集和基于处理器的图像采集两种。我们学习一下如何利用python 工具和笔记本计算机摄像头进行…上篇文章我们学习了图片的数据采集今天主要了解一下视频数据采集的方法。视频是由一系列图像构成的其中每一张图片就是一帧。视频数据采集方法通常有自动图像采集和基于处理器的图像采集两种。我们学习一下如何利用python 工具和笔记本计算机摄像头进行视频数据的实时采集。 1、基础操作方法
在Python中使用OpenCV库录制视频是一种常见的需求尤其是在进行视频处理、机器视觉项目或教学视频录制时。OpenCVOpen Source Computer Vision Library提供了强大的视频处理功能包括视频录制。
1)cv2.VideoWriter()方法
cv2.VideoWriter(video_file_name,fourcc,fps,frameSize[,isColor])
video_file_name:创建写入对象录制视频的名称
fourcc:用来指定视频的编码格式每个编/解码器都有一个4字符标记
fps:视频的帧速率指视频每秒多少帧
frameSize录制视频的窗口大小长和宽
isColor:判断是否为彩色图像非零为彩色帧否在为灰度帧 2fourcc常用编码格式
在OpenCV中fourcc通常是一个四字符代码用于标识不同的编解码器。例如
XVID 通常用于MP4文件特别是在使用x264编解码器时。DIVX 也是一个常用的编解码器特别是在较老的系统中。X264 用于H.264编码这是一种广泛使用的视频编码格式。MJPG 用于Motion JPEG编码通常用于.avi文件。
举例说明
# 定义视频编解码器和创建VideoWriter对象
# 参数分别是输出文件名编解码器帧率帧大小是否为彩色
fourcc cv2.VideoWriter_fourcc(*XVID) # 或者使用MJPG, X264, DIVX等
out cv2.VideoWriter(output.avi, fourcc, 20.0, (640, 480)) 3)cv2.VideoCapture.get()方法
cv2.VideoCapture.get() 是 OpenCV 库中用于获取视频捕获设备例如摄像头或视频文件的属性值的方法。这个方法非常有用因为它允许你访问和调整摄像头的各种参数比如帧宽、帧高、帧率等。
获取摄像头的帧宽和帧高
import cv2 # 创建一个VideoCapture对象0通常是内置摄像头的索引
cap cv2.VideoCapture(0) # 获取摄像头的帧宽和帧高
frame_width cap.get(cv2.CAP_PROP_FRAME_WIDTH)
frame_height cap.get(cv2.CAP_PROP_FRAME_HEIGHT) print(fFrame width: {frame_width})
print(fFrame height: {frame_height}) # 释放VideoCapture对象
cap.release() 获取摄像头的帧率
import cv2 # 创建一个VideoCapture对象0通常是内置摄像头的索引
cap cv2.VideoCapture(0) # 获取摄像头的帧率
fps cap.get(cv2.CAP_PROP_FPS) print(fFrame rate: {fps}) # 释放VideoCapture对象
cap.release() 2、举例说明
我们试着通过通过笔记本摄像头录一段视频
录制视频并保存的基本步骤如下
1使用cv2.VideoCapture(0)来获取默认摄像头。
2使用cv2.VideoWriter来创建视频写入对象。
3循环读取摄像头的帧并使用write方法写入视频文件。
4当不再需要视频写入对象时使用release方法释放资源。 import cv2 #导入CV2库来使用 video_dir D:\\dewi\\project2024\\myListPractice\\pythonProject1\\test_data\\get_videos\\ file_name 005.avi video_file_name video_dir file_name cap cv2.VideoCapture(0) #开启摄像头0指笔记本内置摄像头 #设置视频的宽度和高度 frame_width int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) frame_height int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) #创建视频写入对象 out_video cv2.VideoWriter(video_file_name, cv2.VideoWriter_fourcc(D,I,V,X), 20,(frame_width,frame_height)) while True: ret,frame cap.read() #捕获帧信息 if ret: out_video.write(frame) print(写入成功) else: print(获取图片出错了) break cap.release() #释放摄像头 out_video.release() #释放视频对象 cv2.destroyAllWindows() #关闭所有图像窗口 3、进阶练习
在上一个练习的基础上我们录取10段视频每秒钟30帧图片。参考代码 import cv2 #导入CV2库来使用 import time video_dir D:\\dewi\\project2024\\myListPractice\\pythonProject1\\test_data\\get_videos\\ cap cv2.VideoCapture(0) #开启摄像头0指笔记本内置摄像头 #设置视频的宽度和高度,帧率 frame_width int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) frame_height int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) fps cap.get(cv2.CAP_PROP_FPS) for seg in range(10): #获取10段视频 # 获取当前系统时间戳秒 current_timestamp time.time() # 转换为本地时间 current_time time.localtime(current_timestamp) # 格式化输出 formatted_time time.strftime(%Y-%m-%d_%H%M%S, current_time) file_name fvideo_{formatted_time}.avi #视频名称添加当前时间的时间戳 video_file_name video_dir file_name #创建视频写入对象 out_video cv2.VideoWriter(video_file_name, cv2.VideoWriter_fourcc(*XVID), fps,(frame_width,frame_height)) for count in range(300): #每段视频为10秒需要300帧数据30帧/秒 ret,frame cap.read() #捕获帧信息 if ret: out_video.write(frame) #print(写入成功) else: print(获取图片出错了) break print(f第{seg1}段视频录制(fps:{fps})成功,file_name) out_video.release() cap.release() cv2.destroyAllWindows() 执行结果参考
第1段视频录制成功 video_2025-03-30_181125.avi
第2段视频录制成功 video_2025-03-30_181136.avi
第3段视频录制成功 video_2025-03-30_181146.avi
……
在对应的文件夹下看到了录制的10段视频。 每天进步一点点继续加油