opencv树莓派用外接摄像头拍照
时间: 2025-01-05 12:15:15 浏览: 4
### 实现树莓派上外接USB摄像头与OpenCV拍照
对于在树莓派上使用外接USB摄像头并通过OpenCV实现拍照功能,在安装必要的软件包之后,可以通过编写Python脚本来完成这一目标。为了确保环境配置正确无误,需先执行如下命令来安装所需的库文件[^3]:
```bash
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install libopencv-dev python-opencv v4l-utils
```
上述指令不仅更新了系统的软件列表并升级已有的程序包至最新版本,还特别指定了`libopencv-dev`和`python-opencv`两个用于支持图像处理操作的核心组件。
接下来展示一段简单的Python代码片段,该段代码能够初始化连接到树莓派的USB摄像头设备,并按照设定的时间间隔自动捕捉图片,同时依据当前时间戳为每张捕获的照片命名以便于区分不同时刻获取的画面数据[^1]。
```python
import cv2
from datetime import datetime
import time
def capture_image(camera_port=0, ramp_frames=30):
camera = cv2.VideoCapture(camera_port)
# 调整分辨率 (可选)
camera.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
for i in range(ramp_frames): # 让相机稳定下来
_, _ = camera.read()
retval, im = camera.read()
filename = f"{datetime.now().strftime('%Y%m%d_%H%M%S')}.jpg"
cv2.imwrite(filename, im)
del(camera)
return filename
if __name__ == "__main__":
interval_seconds = 5 * 60 # 设置每隔五分钟拍一次照
while True:
try:
image_file = capture_image(1) # 假设USB摄像机位于端口1处
print(f"Captured {image_file}")
time.sleep(interval_seconds)
except KeyboardInterrupt:
break
```
这段代码实现了基本的功能需求——即周期性的触发拍照动作并将所得影像存储起来;其中值得注意的是参数`camera_port`应设置成对应实际使用的视频输入源编号(通常情况下默认值为0表示第一个检测到的摄像头),如果存在多个外部设备,则需要根据实际情况调整此数值以匹配特定硬件位置[^4]。
阅读全文