您的位置:首页 > 文旅 > 旅游 > 柳南区新闻_北京整站线上推广优化_昆山网站制作公司_上海网站排名优化怎么做

柳南区新闻_北京整站线上推广优化_昆山网站制作公司_上海网站排名优化怎么做

2024/12/25 1:06:53 来源:https://blog.csdn.net/tyfwin/article/details/144200015  浏览:    关键词:柳南区新闻_北京整站线上推广优化_昆山网站制作公司_上海网站排名优化怎么做
柳南区新闻_北京整站线上推广优化_昆山网站制作公司_上海网站排名优化怎么做

需要安装的 Python 包

  1. OpenCV:用于处理图像和视频。
  2. PiCamera(可选):如果你使用的是官方的 Raspberry Pi Camera Module,可以通过 opencv 直接访问,也可以安装 picamera 库用于更深层次的控制。
安装步骤

先确认摄像头模块已经启用:

  1. 在终端中运行:
    sudo raspi-config
    
  2. 在菜单中找到 Interface Options,选择 Camera,并启用。
  3. 重启树莓派:
    sudo reboot
    

然后安装好需要的库,可以参考:
树莓派–OpenCV安装踩坑
树莓派明明安装了opencv和numpy,却找不到


测试摄像头状态

ls /dev/video*  

如果有 video0 就说明摄像头没有问题


如果读取不到摄像头,可能原因

  1. 摄像头被其他进程占用

    • 如果其他程序(例如 raspividmotion 或 OpenCV)正在使用摄像头,picamera 库将无法初始化连接。
  2. 摄像头配置不正确

    • 树莓派的摄像头模块可能未正确启用或初始化。
  3. 设备节点冲突

    • 如果有多个视频设备,系统可能尝试分配错误的设备节点。
  4. 显存不足

    • 树莓派的 GPU 内存分配不足,无法满足 picamera 的需求。

解决方法

** 1:检查摄像头是否被占用**
  1. 使用以下命令查找使用摄像头的进程:
    lsof /dev/video0
    
  2. 如果有输出,说明某个进程正在使用摄像头,记录下进程 ID (PID),然后终止它:
    kill -9 <PID>
    

** 2:重启摄像头模块**
  1. 禁用并重新启用摄像头模块:

    sudo modprobe -r bcm2835-v4l2
    sudo modprobe bcm2835-v4l2
    
  2. 检查设备是否正常:

    ls /dev/video*
    

** 3:调整显存**
  1. 打开 GPU 内存配置:
    sudo raspi-config
    
  2. 选择 Performance Options > GPU Memory
  3. 将显存调整为 128 MB 或更高(建议 256 MB,这里不要设置太高,会导致黑屏无法正常显示!!!!!)。
  4. 重启系统:
    sudo reboot
    

4:测试摄像头模块

使用以下命令测试摄像头是否正常工作:

raspivid -t 5000

这会显示摄像头画面 5 秒钟。如果正常工作,说明硬件无问题。


5. 检查摄像头模块是否启用

确认摄像头模块已启用。使用以下命令检查:

vcgencmd get_camera

输出应该是:

supported=1 detected=1

如果不是,可以通过 raspi-config 工具启用摄像头模块:

sudo raspi-config

然后选择 Interface Options > Camera,启用摄像头,并重启系统。

6. 确保系统没有占用过多的资源

如果树莓派的内存或 CPU 负载过高,也可能导致资源不足。使用以下命令检查系统资源:

top

如果系统负载过高,尝试关闭不必要的进程,释放资源。


总结

  1. 更新树莓派的固件和软件包。
  2. 调整 GPU 内存。
  3. 禁用并重新启用摄像头模块。
  4. 确保没有进程占用摄像头。
  5. 检查摄像头是否已启用。

下面附上采集并保存视频的代码

代码示例 1:使用 OpenCV

下面是一个简单的示例,利用 OpenCV 从摄像头读取视频帧并保存为视频文件:

import cv2# 初始化摄像头(摄像头索引为 0)
cap = cv2.VideoCapture(0)# 设置视频参数(分辨率和帧率)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
cap.set(cv2.CAP_PROP_FPS, 30)# 定义视频编码器和输出文件
fourcc = cv2.VideoWriter_fourcc(*'XVID')  # 或者使用 'MJPG'
out = cv2.VideoWriter('output.avi', fourcc, 30, (640, 480))print("按 'q' 退出并保存视频...")while True:ret, frame = cap.read()if not ret:print("无法读取摄像头数据!")break# 显示视频cv2.imshow('Video', frame)# 写入到输出文件out.write(frame)# 按 'q' 键退出if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()

代码示例 2:使用 PiCamera

如果使用的是官方摄像头,也可以使用 picamera 库来捕获视频,个人感觉能用opecv就最好用opencv,迁移方便:

from picamera import PiCamera
from time import sleepcamera = PiCamera()# 设置分辨率和帧率
camera.resolution = (640, 480)
camera.framerate = 30# 开始录制并保存到文件
camera.start_recording('video.h264')
print("开始录制,按 Ctrl+C 停止...")
try:sleep(10)  # 录制 10 秒
finally:camera.stop_recording()print("录制完成,保存为 video.h264")

注意文件格式转换

  • 如果使用 PiCamera 保存的 .h264 文件,可以使用以下命令将其转换为 .mp4 格式:
    MP4Box -add video.h264 video.mp4
    
    需要安装 gpac 工具:
    sudo apt install gpac
    

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com