opencv中怎么采集图像序列
时间: 2025-01-06 17:45:41 浏览: 4
### 如何使用 OpenCV 采集图像序列
为了实现图像序列的采集,`VideoCapture` 是 OpenCV 提供的一个重要接口。该接口不仅支持从摄像头读取视频流,还能够处理来自文件的视频输入。
对于基于 Python 的开发环境而言,下面是一个简单的例子来展示如何利用 `VideoCapture` 来获取并保存一系列静态图片:
```python
import cv2 as cv
import os
def capture_image_sequence(output_folder='captured_images', num_frames=10):
cap = cv.VideoCapture(0)
if not cap.isOpened():
print("无法打开摄像头")
exit()
if not os.path.exists(output_folder):
os.makedirs(output_folder)
frame_count = 0
while True and frame_count < num_frames:
ret, frame = cap.read()
if not ret:
break
image_path = f"{output_folder}/image_{frame_count}.jpg"
cv.imwrite(image_path, frame)
print(f"已捕获 {image_path}")
frame_count += 1
# 显示捕捉到的画面(可选)
cv.imshow('Capturing...', frame)
key = cv.waitKey(1) & 0xFF
if key == ord('q'):
break
cap.release()
cv.destroyAllWindows()
capture_image_sequence(num_frames=5)
```
这段代码创建了一个名为 `capture_image_sequence()` 函数[^4],它接受两个参数:一个是用于存储抓拍照片的目标目录路径,默认设置为当前工作目录下的 "captured_images"; 另外一个是想要连续拍摄的照片数量,在这里设定了默认值为10张。如果指定的输出文件夹不存在,则会先创建这个文件夹;接着初始化 `VideoCapture` 对象连接至第一个可用设备(即索引号为零)。一旦成功建立链接,程序进入循环模式直到达到预定义的最大帧数或用户按下 'q' 键终止操作为止。每次迭代期间都会尝试读入一帧画面,并将其保存成JPEG格式文件于之前提到过的输出位置之中。最后记得关闭摄像机资源以及清理窗口以防止内存泄漏等问题发生。
阅读全文