一、遇到的问题
莓派4B在使用官方的Camera Module 3摄像头时,无法通过opencv直接获取到图像,具体问题表现在opencv可以打开摄像头但是无法获取到图像信息,导致imshow等方法因无法获取图像数据进而报错,只能使用picamera2库进行图像的获取和和处理,对不熟悉picamera2库的同学不够友好;
[INFO]注意: 本教程的环境是树莓派4B+2023-05-03-raspios-bullseye-arm64镜像,不保证其他镜像是否可行。
二、为什么是picamera2?
树莓派官方提供的picamera2库是针对libcamera驱动提供的python库。
注意:Picamera2仅支持Raspberry Pi OS Bullseye 镜像
更多信息请访问
–官方PDF文档
https://datasheets.raspberrypi.com/camera/picamera2-manual.pdf
–微雪电子文档
https://www.waveshare.net/wiki/RPi_Camera_picamera2_Guide
三、准备工作
1.目录结构
2.树莓派摄像头状态
在安装好摄像头之后,不用通过sudo raspi-config打开摄像头,如果打开了会报错,最终状态应该如下图所示
四、使用步骤
1.安装picamera2
如果安装的过程较慢,应该进行树莓派换源使用国内进行进行安装和更新,具体过程请自行查找
sudo apt update
sudo apt upgrade
sudo apt install -y python3-picamera2
2.初始化picamera2
Picamera2_Img_et.py
from picamera2 import Picamera2
from libcamera import controls
class Imget:
def __init__(self):
# 创建一个Picamera2对象的实例
self.cam = Picamera2()
# 设置相机预览的分辨率
self.cam.preview_configuration.main.size = (640, 360)
self.cam.preview_configuration.main.format = "RGB888"
# 设置预览帧率
self.cam.preview_configuration.controls.FrameRate = 50
# 对预览帧进行校准
self.cam.preview_configuration.align()
# 配置相机为预览模式
self.cam.configure("preview")
# 设置相机控制参数为连续对焦模式(自动对焦)
self.cam.set_controls({"AfMode": controls.AfModeEnum.Continuous})
# 启动相机
self.cam.start()
def getImg(self):
# 获取相机捕获的图像数组(numpy数组)
frame = self.cam.capture_array()
# 返回捕获的图像数组
return frame
def __del__(self):
self.cam.stop()
self.cam.close()
3.树莓派4B安装python-opencv
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn opencv-python
4.使用opencv获取图像
opencv.py
import cv2 as cv # 导入OpenCV库
from Picamera2_Img_et import Imget # 自定义模块Imget中的类Imget
getImg = Imget() # 创建Imget对象实例
while True: # 进入循环,持续运行
frame = getImg.getImg() # 调用Imget对象的getImg方法获取帧图像
cv.imshow('frame', frame) # 在窗口中显示帧图像,窗口名称为'frame'
if cv.waitKey(1) & 0xFF == ord('q'): # 若按下的字符为'q'时退出循环
break
cv.destroyAllWindows() # 销毁所有窗口
5.运行结果
文章来源:https://www.toymoban.com/news/detail-859626.html
总结
通过对picamera2获取图像的封装,就可以使用opencv对摄像进行操作,使用opencv的各种处理函数会更加的方便。有问题可以留言,一起解决。文章来源地址https://www.toymoban.com/news/detail-859626.html
到了这里,关于树莓派4B使用opencv获取Camera Module 3摄像头图像(解决无法直接获取图像的问题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!