解决树莓派原装libcamera(csi)摄像头无法通过opencv读取数据的问题

这篇具有很好参考价值的文章主要介绍了解决树莓派原装libcamera(csi)摄像头无法通过opencv读取数据的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

解决树莓派原装libcamera(csi)摄像头无法通过opencv读取数据的问题

1. 环境

1.1 硬件

树莓派4B

树莓派原装CSI摄像头IMX219(libcamera Camera Raspberry Pi)

树莓派(raspberry pi)——解决opencv打开摄像头出错(error: (-215)size.width>0&&,opencv,嵌入式硬件,计算机视觉

1.2 软件

64位树莓派arrch64,Debian 11(bullseye)

Python3.9

OpenCv

2. 遇到的问题

import cv2
cap = cv2.VideoCapture(0)
ret, frame = cap.read()

此时返回的ret,frame = (False, None)

继续执行下面这条语句

img=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

报错如下

cv2.error: OpenCV(4.5.0-dev) /home/pi/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

树莓派(raspberry pi)——解决opencv打开摄像头出错(error: (-215)size.width>0&&,opencv,嵌入式硬件,计算机视觉

若直接执行

cv2.imshow("frame", frame)

则报错如下

error: (-215)size.width>0&&size.height>0 

出现上述情况,应该是opencv读取不到摄像头数据所致

接下来排查摄像头是否存在问题

执行下面指令

libcamera-hello --qt-preview

发现摄像头可以成功打开

接下来尝试了网上所有的解决方法,都未能奏效。于是放弃opencv直接调用。

3. 解决方法

使用Python的picamera2库调用摄像头,其直接输出的numpy.ndarray数据类型与opencv无缝衔接,完美替换上述opencv直接调用的方案。

树莓派镜像在Bullseye版本之后,底层的树莓派驱动由Raspicam切换成libcamera。libcamera是一个开源的软件栈,方便于第三方移植和开发自己的摄像头驱动。官方已经针对libcamera提供了pycamera2库,方便用户使用Python程序调用。

3.1 picamera2安装

sudo apt install -y python3-picamera2

3.2 例程

from picamera2 import Picamera2
import cv2
import time

#初始化
picam2 = Picamera2()	#创建摄像头对象开启摄像头,只能创建一次
picam2.start()	#开启摄像头,无需重复开启
time.sleep(1)

#抓拍
array = picam2.capture_array("main")	#捕获一帧相机数据,输出为numpy.ndarray类型,与opencv无缝连接

#使用opencv显示图像
cv2.imshow('test', array)
cv2.waitKey(0)	#按任意键关闭预览窗口
cv2.destroyWindow('test')

4. 参考资料

Picamera2 Python摄像头库,基于libcamera开源框架、适用于树莓派 - CNX Software中文站 (cnx-software.cn)

picamera2官方文档The Picamera2 Library (raspberrypi.com)

微雪官网资料RPi Camera V2 - Waveshare Wiki文章来源地址https://www.toymoban.com/news/detail-775902.html

到了这里,关于解决树莓派原装libcamera(csi)摄像头无法通过opencv读取数据的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 树莓派CSI摄像头使用python调用opencv库函数进行运动检测识别

    树莓派CSI摄像头使用python调用opencv库函数进行运动检测识别

    目录 一、完成摄像头的调用 二、利用python调用opencv库函数对图像进行处理 2.1 图像处理大体流程 2.2 opencv调用函数的参数以及含义 2.2.1 ret, img = cap.read() 读取帧图像 2.2.2 cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 灰度图像 2.2.3 gray_diff_img = cv2.absdiff(gray_img, previous_img) 帧差法 2.2.4 cv2.thre

    2024年02月15日
    浏览(16)
  • 树莓派4B使用opencv获取Camera Module 3摄像头图像(解决无法直接获取图像的问题)

    树莓派4B使用opencv获取Camera Module 3摄像头图像(解决无法直接获取图像的问题)

    莓派4B在使用官方的Camera Module 3摄像头时,无法通过opencv直接获取到图像,具体问题表现在 opencv可以打开摄像头但是无法获取到图像信息,导致imshow等方法因无法获取图像数据进而报错 ,只能使用picamera2库进行图像的获取和和处理,对不熟悉picamera2库的同学不够友好; [INF

    2024年04月27日
    浏览(18)
  • 【CV】树莓派+OpenCV-python解决摄像头分辨率及帧率过低无法调整问题

    【CV】树莓派+OpenCV-python解决摄像头分辨率及帧率过低无法调整问题

    笔者使用的是USB摄像头。 如果你使用的是CSI摄像头, vcgencmd get_camera 命令可能能够帮到你。希望读取高帧率可以看看CSDN-树莓派ARM64系统中如何设置opencv-python读取高清摄像头画面 如果你使用的是USB摄像头, vcgencmd get_camera 命令会出现 supported=1 detected=0 的提示,这是正常的。同

    2024年02月05日
    浏览(42)
  • JetsonNano学习(四)OPENCV开启CSI摄像头

    JetsonNano学习(四)OPENCV开启CSI摄像头

    网上非常多的代码打不开CSI摄像头,但是使用 Python2 可以解决,根本原因在于OpenCV版本,Python2库中的CV2版本高于Python3导致,通过更新Python3库中的OpenCV即可解决该问题。 断电安装CSI摄像头,注意排线线缆的方向和正反,安装完成后上电开机。 如果是USB摄像头,安装有手就行

    2024年02月15日
    浏览(16)
  • jetson nano 用opencv使用摄像头(CSI和USB)

    目录 1.测试摄像头是否可用 查看是否连接到摄像头  CSI摄像头测试 USB摄像头测试 2.若以上步骤正常,进行oepncv读取摄像头数据 (1)CSI摄像头 1.安装v4l2-utils协助工具 2.查看摄像头详细参数--支持的图片大小和对应帧率 3.安装管道gstreamer库 4.使用opencv读取图片例程 (2)USB摄像

    2024年02月08日
    浏览(16)
  • 树莓派4B摄像头安装+Ubuntu22.04系统摄像头识别

    树莓派4B摄像头安装+Ubuntu22.04系统摄像头识别

    树莓派4B安装上摄像头后,是不能立即使用的,需要进行一些配置才能使用,本文详细说明了配置过程和测试结果。 执行以下命令,检测是否可以识别摄像头: 结果如下: 返回结果:supported=0 detected=0,说明此时摄像头硬件还没有识别出来,而且设备是不支持摄像头配件的,

    2024年02月22日
    浏览(33)
  • 【树莓派笔记】树莓派摄像头的简单使用

    【树莓派笔记】树莓派摄像头的简单使用

    这里使用的是树莓派CSI (Camera Serial Interface)摄像头。引脚面朝micoHDMI接口处。关机后安装,热插拔可能无法检测到。 终端输入   之后重启即可 命令行用 raspistill 使用摄像头进行拍照。 可以用 -e png 指定生成jpg、png、gif、bmp格式的图片,后三种无损,生成速度会慢些。 raspiy

    2024年02月15日
    浏览(11)
  • 树莓派——opencv打开树莓派摄像头调试记录

    树莓派——opencv打开树莓派摄像头调试记录

    目录 一、安装包:(注意换要源,不要用系统默认源) 问题1:磁盘空间不足——把根目录扩展到整个SD卡 解决:把根目录扩展到整个SD卡 二、下载 1、先创建opencv目录: 2、下载 问题:fatal: unable to access \\\'https://github.com/opencv/opencv.git/\\\': gnutls_handshake() failed: The TLS connection was

    2024年02月11日
    浏览(9)
  • 【树莓派】摄像头的基本使用

    【树莓派】摄像头的基本使用

    本次实验目标是: 1、完成树莓派使用CSI摄像头拍取照片,拍摄视频 2、使用socket进行网络拍照控制和图片传输功能。 树莓派4B 树莓派摄像头 VNC-Viewer eclipse/VS Code(Java) 将树莓派断电,并将CSI摄像头接入靠近网孔的排孔中,CSI摄像头蓝色面朝网孔方向。 终端执行指令 使能摄

    2023年04月08日
    浏览(9)
  • 树莓派摄像头使用方法

    树莓派摄像头使用方法

       打开之后,重启树莓派:sudo reboot  输入以下指令,可以使用树莓派摄像头的拍照功能:  树莓派拍摄照片保存到指定文件夹,下面的例子将照片保存在了/home/pi/httpHeadler/ 也可以通过system函数调用拍照命令。

    2024年02月14日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包