树莓派ARM64系统中如何设置opencv-python读取高清摄像头画面

2023-10-30

问题

树莓派4B 8G,2021-10-30-raspios-bullseye-arm64.imgLinux raspberrypi 5.10.63-v8+ #1459 SMP PREEMPT Wed Oct 6 16:42:49 BST 2021 aarch64 GNU/Linux,用vcgencmd get_camera监测,输出support=0 detected=0
发现使用miniconda安装的python 3.9中读取树莓派4B摄像头帧时只能以480p分辨率读取,就算代码中定义了cap的长宽也无法获取其他分辨率的图片。
树莓派的ARM64位系统用的是Bullseye版本,其中没有raspistill库,因为新版本系统舍弃了旧版本的驱动(New default camera subsystem based on libcamera. New camera demo applications (libcamera-still and libcamera-vid) have replaced raspistill and raspivid),并且我尝试自己编译userland libraries(https://github.com/robidouille/robidouille/tree/master/raspicam_cv)是提示不支持64位系统,所以转而寻找其他方法。
树莓派的ARM64位系统也不支持picamera库,缺少’libmmal.so’库的32位支持。因此,只能从驱动和opencv下手。

解决方案

/boot/config.txtcamera_auto_detect=1注释掉,加入start_x=1,设置 gpu_mem=512 ;将/etc/modules中只保留i2c-dev

sudo nano  /boot/config.txt
    # Automatically load overlays for detected cameras
    #camera_auto_detect=1   注释这一行
    start_x=1    			加入这一行
    gpu_mem=512   			大于128即可

sudo nano /etc/modules
    i2c-dev
    #bcm2835-v4l2

conda install opencv
vcgencmd get_camera
import cv2, time
# cap = cv2.VideoCapture('/dev/video0', cv2.CAP_V4L)
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 2592)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1944)
# cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc('M', 'J', 'P', 'G'))

t=time.time()
for i in range(10):
    ret, frame = cap.read()
print((time.time()-t)/10,'s')
print(ret, frame.shape)
# frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
cv2.imwrite('/home/pi/Desktop/image.jpg', frame)
cap.release()

参考资料

https://zhuanlan.zhihu.com/p/435575418
https://www.raspberrypi.com/documentation/accessories/camera.html#python-bindings-for-libcamera
https://blog.forgiveher.cn/posts/1574671872/
https://github.com/kabelhorst/userland
https://github.com/robidouille/robidouille/tree/master/raspicam_cv

官方文档提到

To override the automatic camera detection, Bullseye users will also need to delete the entry
camera_auto_detect=1
if present in the config.txt file. If you need to do edit this file then your Raspberry Pi will need to be rebooted. Setting camera_auto_detect=0 disables the boot time detection completely.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树莓派ARM64系统中如何设置opencv-python读取高清摄像头画面 的相关文章

  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2

随机推荐

  • 自己搭建和部署禅道测试环境

    1 本人使用的是Windows一键安装 地址如下https www zentao net download 80138 html 中文版 下载完成之后 双击解压到根目录C 或D 进入 2 双击运行start exe 选择启用禅道 如果出现如
  • 常见绕过姿势小结

    一 SQL注入 假设关键词被过滤掉 我们尝试以下绕过方法 1 大小写绕过 id 1 AND 1 1 id 1 anD 1 2 查看是否存在注入 id 1 And 1 1 id 1 aNd
  • vue 点击图标切换图标_Vue的动画SweetAlert图标

    vue 点击图标切换图标 Vue的动画SweetAlert图标 Animated SweetAlert Icons for Vue A clean and simple Vue wrapper for SweetAlert s fantas
  • Ubuntu如何把主文件夹的中文设置成英文

    打开终端 输入命令 export LANG en US 接着输入更新命令 xdg user dirs gtk update 然后输入命令 export LANG zh CN 最后输入重启命令 sudo reboot 重启之后就可以看到主文件
  • Lanbda表达式详解

    lambda 表达式最大的用处就是简写代码 在需要降低代码之间的耦合性和侵入性较多使用匿名内部类来解决这一问题 我们使用lambda表达式可以将匿名内部类最大程度的简写 除此之外lambda表达式的作用就是让你的代码变得更加优雅 文件过滤器
  • log4j.properties log4j.xml 路径问题

    我的博客现在已经搬家到极客导航的博客模块中链接地址是 极客博客 顺便做了个程序员资源导航站www gogeeks cn 有兴趣的朋友不妨看一看有哪些还没了解到的IT方面的东西 比如框架 书籍 教程 开源社区等等吧 自动加载配置文件 1 如果
  • 从ReentrantLock的角度来看AQS原理

    ReentrantLock ReentrantLock作为java api层面的加锁方式 其性能比synchronized更好 synchronized进行优化后性能差不太多 灵活性更强 ReentrantLock synchronized
  • MySql 学习(4)Linux MySql 开启远程服务

    1 MySql设授权远程访问 1 使用mysql u root p登录mysql 2 使用mysql数据库 真正的数据库 而非数据库软件 将所有数据库的所有表 的所有权限 all privileges 授予通过任何ip 访问的root用户
  • quartusII创建第一个VHDL程序

    选择file new project wizard 点击next 这一步忽略 输入项目的名称 自己写就可以 随便什么 不要有空格 默认选择空文件 next 如果需要增加写好的文件 自己选择 不需要就忽略 直接next 选择硬件器件型号 打包
  • 错误信息:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。

    错误信息 未在本地计算机上注册 microsoft ACE oledb 12 0 提供程序 解决办法 去下载 然后安装就行了 本错误是由于你使用了ACCESS2007版本建立的数据库 但服务器中没有相配合使用的程序 所以出错 未在本地计算机
  • HG海光X86

    1 X86模式 只有Intel和AMD可以持续演进 架构授权体系封闭 仅限于Intel和AMD交叉授权 其他厂家无法拿到完整授权 2 HG授权来自AMD 属于IP授权且盒子公司被AMD控股 核心技术受控在AMD IP授权只能用 不能改 无法
  • 临界区(锁)windows/linux通用

    lock h pragma once ifdef WIN32 include
  • react umi dva 使用 useSelector,useDispatch

    react umi dva 使用 useSelector useDispatch 需要保证 是在hooks 里面引入使用 且 是hooks 方式 调用 组件
  • 微信赌场——H5棋牌游戏渗透之旅

    i春秋作家 F0rmat 0x01 前言 本来不想发的 涉及太多利益了 这些棋牌游戏的源码最高能卖到几万 开发起来不比一个商场程序难 最近又太忙了 没时间去做代码审计的文章了 但一不小心又抢了个运气王 0x02 开始 一天做这行的朋友来找我
  • 全书简介和作者寄语

    聪明办法学Python 大家好 我是小雨姑娘 双非本科自学数据挖掘 曾两次获得数据挖掘比赛冠军 被选入2020数据挖掘竞赛十大开源贡献者 人工智能开源组织Datawhale成员 现于北美攻读计算机博士学位 创作本教程的初心是提供一个更快捷有
  • sqli-labs靶场第十八关

    十八关有点特殊 后台对输入的账号和密码都调用了函数进行过滤了 所以要转换注入方式 尝试去请求头里面修改信息 可以尝试cookie注入 user agent注入 refer字段注入 最终在user agent字段发现注入点 因为输入单引号或双
  • Python经典热力学数值分析

    气体动力学理论 理想气体定律的推导 Python 数值探索 以下Python代码块比较平均值 x langle x rangle x 和均方根 x
  • 推荐一款word转pdf超好用的包:aspose-words(解决中文乱码)

    aspose words 是一款超好用的转换工具 转换效果很好 且实现超级简单 首先通过pom xml 引入
  • vue-自定义指令

    自定义指令 一 定义语法 1 局部指令 new Vue new Vue directives 指令名 配置对象 或 directives 指令名 回调函数 2 全局指令 Vue directive 指令名 配置对象 或 Vue direct
  • 树莓派ARM64系统中如何设置opencv-python读取高清摄像头画面

    问题 树莓派4B 8G 2021 10 30 raspios bullseye arm64 img Linux raspberrypi 5 10 63 v8 1459 SMP PREEMPT Wed Oct 6 16 42 49 BST 2