opencv从摄像头获取图片并压缩,逐步解释代码
时间: 2023-05-27 12:03:29 浏览: 104
以下是使用OpenCV从摄像头获取图片并压缩的示例代码:
```
import cv2
# 打开摄像头
cap = cv2.VideoCapture(0)
# 定义编码器及压缩参数
fourcc = cv2.VideoWriter_fourcc(*"XVID")
fps = 20
frameSize = (640, 480)
# 创建VideoWriter对象
out = cv2.VideoWriter("output.avi", fourcc, fps, frameSize)
while True:
# 读取一帧图片
ret, frame = cap.read()
# 压缩图片
resized_frame = cv2.resize(frame, (320, 240))
# 显示图片
cv2.imshow("frame", resized_frame)
# 写入VideoWriter对象
out.write(resized_frame)
# 检测键盘按键
if cv2.waitKey(1) & 0xFF == ord("q"):
break
# 释放摄像头及VideoWriter对象
cap.release()
out.release()
# 关闭所有窗口
cv2.destroyAllWindows()
```
逐步解释代码:
1. `import cv2`:导入OpenCV库。
2. `cap = cv2.VideoCapture(0)`:打开编号为0的摄像头。
3. `fourcc = cv2.VideoWriter_fourcc(*"XVID")`:定义视频编码器为XVID。
4. `fps = 20`:定义视频帧率为20。
5. `frameSize = (640, 480)`:定义视频帧大小为640x480。
6. `out = cv2.VideoWriter("output.avi", fourcc, fps, frameSize)`:创建一个VideoWriter对象,并指定输出文件名、视频编码器、视频帧率和视频帧大小。
7. `while True`:进入循环,读取摄像头的每一帧图像,并进行处理。
8. `ret, frame = cap.read()`:读取一帧摄像头图像。
9. `resized_frame = cv2.resize(frame, (320, 240))`:将读取到的图像压缩至320x240。
10. `cv2.imshow("frame", resized_frame)`:将压缩后的图像显示在窗口中。
11. `out.write(resized_frame)`:将压缩后的图像写入VideoWriter对象中。
12. `if cv2.waitKey(1) & 0xFF == ord("q"):`:检测键盘按键是否为q键,若是则退出循环。
13. `cap.release()`:释放摄像头。
14. `out.release()`:释放VideoWriter对象。
15. `cv2.destroyAllWindows()`:关闭所有窗口。
阅读全文