树莓派Opencv调用摄像头(Raspberry Pi 11)

news2024/10/6 17:46:03

前言:本人初玩树莓派opencv,使用的是树莓派Raspberry Pi OS 11,系统若不一致请慎用,本文主要记录在树莓派上通过Opencv打开摄像头的经验。

1、系统版本

进入树莓派,打开终端输入以下代码(查看系统的版本)

lsb_release -a

uname -a

会显示下面界面

如图,我的树莓派的版本是11的,所以这篇文章仅对同为11版本,系统为bullseye版本的树莓派有用!!

2、环境搭建

首先,是换源的问题,这里建议换清华源,后面可以直接下载相关安装包,速度也还可以,这里大家可以自行更换,后面我也会出相关教程。

Raspberry Pi 11是自带python3的,所以无需额外安装。

更新一遍软件

sudo apt-get update 

sudo apt-get upgrade

扩大系统文件,输入如下命令

sudo raspi-config

选择Advanced Options进入,然后选择Expand Filesystem,然后选择重启,若没有该选项则输入

sudo reboot

重启后安装aptitude软件包,输入如下命令

sudo apt-get install aptitude

这是一个安装命令,可以解决十分令人恶心的安装包依赖问题。具体用法为

sudo aptitude install filename

对于aptitude推荐的方案可以进行yes和no的选择

安装Cmake开发人员工具

sudo apt-get install build-essential cmake git pkg-config

更新numpy

sudo pip3 install --upgrade numpy

安装常用图像工具包

sudo aptitude install libjpeg9-dev libjasper-dev libpng-dev libglu1-mesa-dev libavcodec-dev libavformat-dev libxvidcore-dev libx264-dev libgtk2.0-dev libatlas-base-dev gfortran

直接安装Opencv(现在使用 python3 安装很容易了, 清华源已经可以直接使用下面命令安装,全过程不超过5分钟, 也不需担心中途会断掉)建议

sudo apt-get install python3-opencv

若上面安装失败可以用下面方式,会比较慢

sudo pip3 install opencv-python

三、摄像头

打开摄像头,输入

sudo raspi-config

选择Interfacing Option,选择第一个Camera,选择enable,然后重启。

新建一个camera.py文件,输入以下代码(文件名任意,但是文件格式必须是.py)

该程序使用OpenCV库捕获摄像头画面,调用VideoCapture函数来实现摄像头接口,里面的0是第一个摄像头,1可以设置为usb摄像头,并可以通过按下键盘中的q键退出,并保存当前窗口中的画面为takephoto2.jpg文件,以实现拍照效果。最后,当程序退出时,将释放摄像头并关闭程序窗口

import cv2
import numpy as np //导包
 
cap = cv2.VideoCapture(0) 
while(1):
   # get a frame
   ret, frame = cap.read()
   # show a frame
   cv2.imshow("capture", frame)
       
   if cv2.waitKey(1) & 0xFF == ord('q'):
   #退出并拍照
       cv2.imwrite("takephoto2.jpg", frame)
       print("take Photo Ok")
       break
cap.release()
cv2.destroyAllWindows()

然后在该文件位置打开终端,输入

sudo python3 camera.py

此时如果可能出现下面情况(找了一下午解决办法)

[ WARN:0] global ../modules/videoio/src/cap_gstreamer.cpp (961) open OpenCV | GS                                                                                treamer warning: Cannot query video position: status=0, value=-1, duration=-1
MoTTY X11 proxy: Unsupported authorisation protocol
Unable to init server: Could not connect: Connection refused
Traceback (most recent call last):
  File "/home/pi/camera.py", line 9, in <module>
    cv2.imshow("capture", frame)
cv2.error: OpenCV(4.5.1) ../modules/highgui/src/window_gtk.cpp:624: error: (-2:U                                                                                nspecified error) Can't initialize GTK backend in function 'cvInitSystem'

分析原因是代码中包含类似于如下的窗口界面操作cv2.imshow("capture", frame),就会与后台运作冲突,使GTK的后端不能初始化,引发报错。

 解决办法:

sudo cp ~/.Xauthority /root

再运行

sudo python3 camera.py

MoTTY X11 proxy: Unsupported authorisation protocol - 知乎可以参考这个解决

最后就可以正常调用摄像头啦

参考博文:

(1条消息) 树莓派最新官方系统安装Opencv(Raspberry Pi 11)_树莓派查看opencv版本_Snyoje的博客-CSDN博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/483297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“人工智能教父”从谷歌离职 称后悔发展AI,为世人敲响警钟?

在加入谷歌的第十年、深度学习迎来爆发式发展的当下&#xff0c;被誉为“人工智能教父”的Geoffrey Hinton已从谷歌离职&#xff0c;只是为了告诫人们AI已经变得很危险。 公开资料显示&#xff0c;Geoffrey Hinton在2013年加入谷歌&#xff0c;曾任副总裁&#xff0c;研究机器学…

Python每日一练:硬币的面值奇偶排序陶陶摘苹果(花样解法)

Python每日一练 文章目录 Python每日一练前言一、硬币的面值二、奇偶排序三、陶陶摘苹果总结 前言 很显然&#xff0c;Python的受众远远大于C&#xff0c;其实笔者本人对Python的理解也是远强于C的&#xff0c;C纯粹是为了假装笔者是个职业选手才随便玩玩的&#xff0c;借着十…

【是C++,不是C艹】 缺省参数 | 函数重载 | 内联函数

&#x1f49e;&#x1f49e;欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e; &#x1f449; 专栏&#xff1a;《是C&#xff0c;不是C艹》&#x1f448; 前言&#xff1a; 上期&#xff0c;我带大家给C打了招呼&#xff0c;捎带着认识了命名空间和输入输出&#xff0c;那…

SPSS如何使用基础功能?

文章目录 0.引言1.菜单栏2.工具栏 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对SPSS进行了学习&#xff0c;本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;本文对软件界面基础功能进行阐述。    1.菜单栏 &am…

如何向面试官正确地提问?

你好&#xff0c;我是朱显杰。今天我们来聊一聊面试时&#xff0c;如何向面试官正确提问。 我做过8年面试官&#xff0c;面试过500多人。在面试的过程中&#xff0c;我发现了一个普遍现象&#xff0c;就是大部分候选人都不知道如何向面试官正确提问。要么不问&#xff0c;白白…

RocketMq源码分析(六)--消息消费者启动流程

文章目录 一、消息消费者模式二、消费者启动流程1、 push模式1&#xff09;类关系2&#xff09;类构造器3&#xff09;启动流程 2、pull模式1&#xff09;类关系2&#xff09;类构造器3&#xff09;启动流程 一、消息消费者模式 消息消费分两种模式&#xff1a;推&#xff08;p…

【Redis】Redis缓存双写一致性之更新策略

介绍 面试题 1、只要用到缓存&#xff0c;就可能会涉及到Redis缓存与数据库双存储双写&#xff0c;只要是双写&#xff0c;就一定会有数据一致性问题&#xff0c;怎么解决一致性问题&#xff1f; 2、双写一致性&#xff0c;先动缓存redis还是数据库mysql&#xff1f;为什么&a…

剪枝与重参第十课:RepVGG重参

目录 RepVGG重参前言1. RepVGG2. RepVGG网络搭建2.1 conv_bn2.2 RepVGG Block初始化2.3 forward2.4 branch的合并2.5 重参的实现2.6 整体网络结构搭建2.7 模型导出 3. 完整示例代码总结 RepVGG重参 前言 手写AI推出的全新模型剪枝与重参课程。记录下个人学习笔记&#xff0c;仅…

了解npm run指令

了解npm run指令 在package.json文件中的script字段&#xff0c;可以定义脚本命令&#xff0c;通过npm run指令运行该脚本。 比如简单定义一个输出打印的shell脚本。 {"script": {"hw": "echo hello world!"} }执行npm run hw可以看到终端上打…

Python---正则表达式与递归

1. 正则表达式&#xff1a; 是一种字符串验证的规则&#xff0c;通过特殊的字符串组合来确立规则 用规则去匹配字符串是否满足 如(^[\w-](\.[\w-])*[\w-](\.[\w-])$)可以表示为一个标准邮箱的格式 re模块的三个主要方法&#xff1a; re.match&#xff1a; re.match(匹配规…

电子电气架构——车辆E/E架构Software独立性

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人只有在举棋不定,无从把握的时候才感到疲惫。只有去行动就能获得解放,哪怕做的不好也比无所作为强! 本文主要介绍车辆E/E架构常识,主要涉及E/E架构车载…

Java 操作ElasticSearch

Java REST提供了两种风格的客户端连接工具&#xff0c;Java High Level REST Client、Java Low Level REST Client&#xff0c;这里我就不去细说Java Low Level REST Client了&#xff0c;因为这我确实没用到过&#xff0c;也不是很了解&#xff0c;我说一下Java High Level RE…

LVS 负载均衡群集的 NAT 模式和 DR 模式

文章目录 一、NAT 模式和 DR 模式的介绍DR模式NAT模式两种模式的区别 二、DR模式集群构建配置 一、NAT 模式和 DR 模式的介绍 DR模式 当用户向负载均衡调度器&#xff08;Director Server&#xff09;发起请求&#xff0c;调度器将请求发往至内核空间PREROUTING链首先会接收到…

【JavaEE】HTML基础知识

目录 1.HTML结构 2.HTML常见标签 3.表格标签 4.列表标签 5.表单标签 ​6.select 标签 7.textarea 标签 8.无语义标签: div & span 9.标签小练习 1.HTML结构 形如&#xff1a; <body idmyId>hello</body> HTML的书写格式 标签名 (body) 放到 <…

【操作系统OS】学习笔记:第二章 进程与线程 (上)【哈工大李治军老师】

基于本人观看学习 哈工大李治军老师主讲的操作系统课程 所做的笔记&#xff0c;仅进行交流分享 特此鸣谢李治军老师&#xff0c;操作系统的神作&#xff01; 如果本篇笔记帮助到了你&#xff0c;还请点赞 关注 支持一下 ♡>&#x16966;<)!! 主页专栏有更多&#xff0c;…

58.网页设计规则#5_阴影

一些概念 ● 在一个100%平面设计的时代之后&#xff0c;我们现在又回到了在UI设计中使用阴影(“平面设计2.0”) ● 阴影箱深度(3D):阴影越多&#xff0c;离元素界面越远 利用好阴影 你不必使用阴影!只在对网站个性有意义的情况下使用它们 使用少量的阴影:不要给每个元素…

Jmeter接口自动化测试系列之Http接口自动化实战

以下主要介绍Jmeter接口自动化需要哪些控件、接口自动化实战及总结。 前面的系列文章&#xff0c;介绍了常用组件、参数化、接口依赖、断言等知识点&#xff0c;今天我们要将这些结合起来&#xff0c;进行综合实战。 2023年B站最新Jmeter接口测试实战教程&#xff0c;精通接口…

从一到无穷大 #5 公有云时序数据库定价

文章目录 引言serverless实例售卖结论 Azure CosmosDB预配吞吐量自动缩放吞吐量Serverless预留容量存储量 Amazon Timestream写入计费查询计费存储 阿里云TSDB阿里云Lindom时序引擎实例固定费用存储费用节点费用 华为云GaussDB(for Influx)腾讯云CTSDBTDengineInfluxDB CloudAW…

c++11下篇 + 智能指针

c11下篇 智能指针 1 可变参数模板1.1 递归函数方式展开参数包1.2 逗号表达式展开参数包1.3 STL容器中的empalce相关接口函数&#xff1a; 2 lambda达式2.1 c的痛2.2 lambda表达式语法2.3 函数对象与lambda表达式 3 包装器3.1 bind 4 线程库4.1 thread类的简单介绍4.2 面试题&a…

MySQL示例数据库(MySQL Sample Databases) 之 world_x数据库

文章目录 MySQL示例数据库(MySQL Sample Databases) 之 world_x数据库官方示例数据介绍world_x数据库world_x数据库安装world-db/world.sql的脚本内容参考 MySQL示例数据库(MySQL Sample Databases) 之 world_x数据库 官方示例数据介绍 MySQL 官方提供了多个示例数据库&#…