opencv从摄像头获取图片并压缩保存,逐步解释代码
时间: 2023-05-27 17:06:20 浏览: 129
以下是使用OpenCV从摄像头获取图像并进行压缩保存的Python代码,附有详细注释:
```python
import cv2
# 打开摄像头
cap = cv2.VideoCapture(0)
# 设置图像编解码器
fourcc = cv2.VideoWriter_fourcc(*'XVID')
# 设置保存视频的文件名和编解码器、帧率以及分辨率
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
while True:
# 读取摄像头捕获的帧
ret, frame = cap.read()
# 缩小图像尺寸
frame = cv2.resize(frame, (320, 240))
# 将帧写入输出视频
out.write(frame)
# 显示帧
cv2.imshow('frame', frame)
# 如果按下q键,则退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头和输出视频
cap.release()
out.release()
# 关闭所有OpenCV窗口
cv2.destroyAllWindows()
```
逐行解释:
1. 导入OpenCV模块
```python
import cv2
```
2. 打开摄像头
```python
cap = cv2.VideoCapture(0)
```
其中,参数0表示打开默认的摄像头设备,如果有多个摄像头,则可以使用不同的数字来表示不同的设备。
3. 设置图像编解码器
```python
fourcc = cv2.VideoWriter_fourcc(*'XVID')
```
OpenCV中的VideoWriter_fourcc函数用于设置视频编解码器,常用的编解码器包括XVID、MJPG、DIVX等。
4. 设置保存视频的文件名和编解码器、帧率以及分辨率
```python
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
```
其中,参数'output.avi'表示保存视频的文件名,fourcc表示编解码器,20.0表示帧率,(640, 480)表示视频的分辨率。
5. 循环读取摄像头捕获的帧
```python
while True:
ret, frame = cap.read()
```
其中,cap.read()函数返回两个值:ret表示是否成功读取到帧,frame表示读取到的帧。
6. 缩小图像尺寸
```python
frame = cv2.resize(frame, (320, 240))
```
使用cv2.resize函数将读取到的帧缩小为320x240的尺寸,以减小输出视频的大小。
7. 将帧写入输出视频
```python
out.write(frame)
```
使用out.write函数将读取到的帧写入输出视频。
8. 显示帧
```python
cv2.imshow('frame', frame)
```
使用cv2.imshow函数显示读取到的帧,其中'frame'表示窗口的名称,frame表示要显示的帧。
9. 如果按下q键,则退出
```python
if cv2.waitKey(1) & 0xFF == ord('q'):
break
```
使用cv2.waitKey函数等待键盘输入,如果按下q键,则退出循环。
10. 释放摄像头和输出视频
```python
cap.release()
out.release()
```
使用cap.release()函数和out.release()函数释放摄像头和输出视频资源。
11. 关闭所有OpenCV窗口
```python
cv2.destroyAllWindows()
```
使用cv2.destroyAllWindows()函数关闭所有OpenCV窗口。
阅读全文