基于Raspi的Opencv-Python开发笔记

本文所有未强调 “windows终端” 的 “终端”字眼,都是默认树莓派的终端

系统版本

系统版本有必要强调一下,因为不同版本很多操作需要修改

在终端输入uname -a

Release就是版本号,Codename是版本名

以下操作仅在此版本验证可行

使能摄像头

  1. 物理安装摄像头(本人用的是csi摄像头(0V5647)

  2. 使能 摄像头模块

    • 终端输入sudo raspi-config打开配置
    • 选择 Interface Options ->Legacy Camera ->yes(都是按回车)
    • 重启(断电或 sudo reboot)
  3. 终端输入ls /dev/ 一般就能看见 video0 设备了,恭喜你摄像头使能成功

软件源更换

RaspiOS的默认软件源服务器在国外,不更换的话使用apt等工具下载软件极慢(当然,也不是不行?)

这里直接推荐换清华源

  1. 终端输入 sudo nano /etc/apt/sources.list

  2. 直接使用以下内容更换原内容

    deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
    
    deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
    
    deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
    
    deb https://security.debian.org/debian-security bullseye-security main contrib non-free
    # deb-src https://security.debian.org/debian-security bullseye-security main contrib non-free
    
    
    # deb http://deb.debian.org/debian bullseye main contrib non-free
    # deb http://security.debian.org/debian-security bullseye-security main contrib non-free
    # deb http://deb.debian.org/debian bullseye-updates main contrib non-free
    # Uncomment deb-src lines below then 'apt-get update' to enable 'apt-get source'
    #deb-src http://deb.debian.org/debian bullseye main contrib non-free
    #deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free
    #deb-src http://deb.debian.org/debian bullseye-updates main contrib non-free
    
  3. 接着按下 Ctrl+X 再按 Y 再按回车保存并退出nano编辑器

  4. 终端输入sudo apt update更新软件,第一次换源的话应该需要一段时间

  5. 执行完后可以开始后后续操作了,当然,不换源也可以~

FTP 命令

如果树莓派是接显示屏使用的,可以忽略本章

FTP主要用途是将两个设备建立链接,实现无线传输文件/数据,由于OpenCV需要处理图像,而我们没有显示屏给树莓派,所以可以将图像由windows传过去或在windows端查看计算后的生成图像

本章将讲解在Windows下FTP命令行的使用(建立连接,文件操作,上传文件,下载文件,断开连接)

前提,需要将树莓派配置为FTP服务器,可参考此文章的 设置Raspberry Pi的SFTP章节 和 在Raspberry Pi上设置FTP服务器章节

建立连接

  1. 确保Windows和树莓派在同一局域网,很简单的操作就是树莓派链接Windows的热点,或者两者连接手机热点

  2. 获取IP地址(两个办法)

    • 在热点发出端查询分配给树莓派终端的 IP

      1. 如果是手机热点,在热点管理界面找到已连接设备,就能看到 IP,其他热点或者家用WIFI的话,就麻烦自行百度查IP啦
    • 在树莓派端自行查询被分配的 IP

      1. 终端输入ip address
      2. 找到 3:wlan0:这一行,再由此行往下找两行,找到 inet 开头的行,会有 inet xxx.xxx.xxx.xxx/yy 的一段字,xxx.xxx.xxx.xxx是树莓派ip地址。
  3. 打开Windows的终端(cmd),输入 ftp xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx是树莓派的IP地址

  4. 输入Raspi用户名(如果没额外设置一般是 pi )

    输入Raspi用户名

  5. 输入Raspi密码(由于密码保护,输入密码时是看不见输入了什么的)

    输入Raspi密码

  6. 连接成功

    连接成功

文件操作

ftp>

  1. 使用 ls 来查看当前ftp目录的文件
  2. 使用 cd 来切换ftp系统目录。
  3. 使用 mkdir 来新建一个目录(文件夹)。
  4. 使用 delete 路径+文件名来删除文件。
  5. 使用 mdelete remote-file 批量删除远程主机文件。
  6. 使用 rm 路径名来删除文件夹。
  7. 使用 lcd 设置当前用户工作路径,也就是要把资源下载到本地哪个文件夹。
  8. !xx 是跳出ftp模式,在命令行中执行xx命令,比如说使用 lcd 切换到本地另外一个文件夹之后,你想看当前文件夹下有什么文件,就可以使用 !dir 来实现。
  9. 使用 pwd 命令查看当前路径。

上传文件

  1. 先在ftp命令行中使用 cd xxx 进入想在树莓派存放文件的路径

  2. 使用put(或者send,如果想上传多个文件的话使用mput) 路径+文件名

    put E:\test.txt
    send E:\test.txt
    mput E:\test.txt E:\test1.txt
    

下载文件

  1. 先在ftp命令行中使用 cd xxx 进入想在树莓派存放文件的路径

  2. 使用get(下载多个文件用mget路径+文件名来下载文件。下载的文件默认是保存在了Windows的 C:\Users\[用户名] 路径下

    get ./test.txt
    mget ./test.txt ./test1.txt
    

断开连接

  1. ftp命令行直接输入bye即可

安装OpenCV-Python

由于不同的Python版本也会导致代码的细微区别(大部分情况是没区别的)

终端输入Python -V查看 Python 版本, 本人使用的是 3.9.2 版

以后需要在命令行输入的指令我就不强调 “在终端输入” 这5个字了

正片开始

  1. 安装opencv库,有两个方法,选一即可

    • pip install opencv-python(挺慢的,20多M下载了一个多小时,不过似乎这个能下载最新版)
    • sudo apt install python3-opencv (换源后相当快,几分钟就搞定)
  2. 我记得安装完opencv时,会自动下载numpy库,所以可以跳过此步,如果后续写程序报错了再回来安装下numpy库

    • pip install numpy
  3. 在终端输入 python,运行 python

  4. 输入 import cv2,回车, 如果没有报错,则证明opencv安装完毕

  5. 输入 cd ~/Desktop,进入“桌面”

  6. 在文本编辑器 nano 中写好python程序测试文件

    输入 nano demo.py,写入以下程序

    # 示例代码
    import cv2 as cv
    import numpy as np
    import time
    
    cap = cv.VideoCapture(0) # 实例化摄像头采集器
    time.sleep(1) # 程序等待一秒,等摄像头初始化完毕
    
    _, img = cap.read() # 捕捉一帧图像
    
    cv.imwrite("demo.jpg", img) # 保存在绝对路径
    
  7. 保存并退出 nano 编辑器,输入 python demo.py

  8. 执行完毕后,Desktop路径下应该是生成了 demo.jpg照片,说明摄像头也成功工作了

至此,恭喜你可以在树莓派上做视觉算法的学习了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

传感器和变送器的区别介绍

从它的名称来看,传与感二字。传是指传输,感是指感知。实际上是先有感知,其次转换,最后传输。因此传输是目的,转换是手段,感知是基础。把能够将被测变量(温度、压力、液位、流量)感知…

内存管理【C++】

内存分布 C中的内存区域主要有以下5种 栈(堆栈):存放非静态局部变量/函数参数/函数返回值等等,栈是向下增长的【地址越高越先被使用】。栈区内存的开辟和销毁由系统自动执行 堆:用于程序运行时动态内存分配&#xff…

C++入门3——类与对象2(类的6个默认成员函数)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 构造函数的概念 2.2 构造函数的特性 3. 析构函数 3.1 析构函数的概念 3.2 析构函数的特性 4.拷贝构造函数 4.1 拷贝构造函数的概念 4.2 拷贝构造函数的特性 5.赋值运算符重载函数 5.1运算符重载函数 5.2 赋值运算符重…

docker一键部署EFK系统(elasticsearch filebeat kibana metricbeat es-head)

EFK日志系统搭建 EFK日志系统介绍功能需求搭建elasticsearch集群规划前提部署核对证书及权限 EFK日志系统介绍 Elasticsearch 是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量日志数据,也可用于…

Vue3-路由详解

文章目录 路由对路由的理解安装 Vue Router基本切换效果两个注意点路由器工作模式to的两种写法命名路由嵌套路由路由传参query参数params参数 路由的props配置replace属性编程式导航重定向 更多相关内容可查看 路由 附git地址:https://gitee.com/its-a-little-bad/…

打印机的ip不同且连不上

打印机的ip不同且连不上 1.问题分析2.修改网段3.验证网络 1.问题分析 主要是打印机的网段和电脑不在同一个网段 2.修改网段 3.验证网络

CATO原理中的数学与魔术(十一)——Parity Principle及其应用二:集合的可视化...

早点关注我,精彩不错过! 上篇文章中,我们已经进入了CATO原理魔术介绍的深水区,是第3个系列Parity Principle中集合性质的章节,聊到了关于张数和求和集合性质,并对性质之间的偏序关系,性质之间的…

基于单片机的微型嵌入式温度测量仪的设计与实现分析

摘要 : 作为信息技术中重要的技术手段之一嵌入式单片机系统已经被应用到越来越多不同的行业领域中。如,各种手持监测设备、智能家电设备等。当前展开对单片机的微型嵌入式温度测量仪的设计和实现研究,从微型嵌入式单片机相关理论入手&#xf…

桶形畸变和枕形畸变

桶形畸变和枕形畸变是两种常见的光学畸变现象,主要发生在使用广角镜头或远摄镜头拍摄时。这些畸变是因为镜头的光学特性不能完美地将光线汇聚到一个共同的焦点上,导致图像的不同部分在形状上发生扭曲。下面分别对这两种畸变进行详细描述: 桶…

Ceph集群存储案例

Ceph是一种可靠的、可扩展的、统一的、分布式的存储系统。Ceph高度可靠、易于管理且免费。Ceph提供了非凡的可扩展性——数以千计的客户端访问PB到EB的数据。Ceph存储集群相互通信以动态复制和重新分配数据。目前众多云厂商都在使用Ceph,应用广泛。如:华…

[线程与网络] 网络编程与通信原理(四):深入理解传输层UDP与TCP协议

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

研发效能DevOps: Ubuntu 部署 JFrog 制品库

目录 一、实验 1.环境 2.Ubuntu 部署 JFrog 制品库 3.Ubuntu 部署 postgresql数据库 4.Ubuntu 部署 Xray 5. 使用JFrog 增删项目 二、问题 1.Ubuntu 如何通过apt方式部署 JFrog 制品库 2.Ubuntu 如何通过docker方式部署 JFrog 制品库 3.安装jdk报错 4.安装JFrog Ar…

用follow.it为您的网站添加邮箱订阅功能(附2024版教程)

多数情况下网站用户浏览一次就不会来了(即使用户已收藏您的网站),因为用户很可能已把您的网站忘了。那么怎么样才能抓住网站回头客,让用户再次回到您的网站呢?除了提供更优质的原创内容外,比较好的方法是给…

第十九讲:动态内存分配

第十九讲:动态内存分配 1.为什么要有动态内存分配2.malloc和free2.1malloc2.1.1函数原型2.1.2函数使用 2.2free2.2.1函数原型2.2.2函数使用2.2.3函数使用注意事项2.2.3.1注意点12.2.3.2注意点22.2.3.3注意点32.2.3.4注意点4 2.3malloc和free使用注意事项2.3.1内存覆…

zynq PS点灯

摸鱼碎碎念: 需要做ADC采集并在TFT屏幕实时显示波形(简易示波器) 发现只使用fpga实现比较困难 使用的是zynq,刚好来把arm部分也学到 参考视频 与 教材文档 01_Zynq SoC FPGA的诞生_哔哩哔哩_bilibili (这是俺点开AXI4接口协…

【小白专用24.5.30已验证】Composer安装php框架thinkPHP6的安装教程

一、框架介绍 1、框架简介和版本选择 Thinkphp是一种基于php的开源web应用程序开发框架ThinkPHP框架,是免费开源的、轻量级的、简单快速且敏捷的php框架。你可以免费使用TP框架,甚至可以将你的项目商用; ThinkPHP8.0 是目前框架正式版的最新版…

windows上CMake、Mingw和VSCode配置调试C/C++代码

大型项目里经常使用CMake,我在Windows平台上开发,使用的代码编辑器是VSCode,我使用的是mingw的编译器,以前使用的是一个脚本来进行编译: run.bat cmake -G "MinGW Makefiles" .. mingw32-makeVSCode可以方…

Linux实验报告(二)——Linux系统中的常用命令

目录 一、实验名称: 二、仪器、设备: 三、参考资料: 四、实验目的: 五、实验内容(步骤): 六、实验数据(程序)记录: ​编辑 ​编辑 七、实验结果分析…

蒙自源六一儿童节特别活动:美食盛宴,快乐无限

蒙自源始终坚持以用户为中心,致力于为消费者提供健康美味的米线。据悉,蒙自源的每家门店店长都会在每天早晨亲自熬制一锅鲜美的汤底,确保顾客能够享受到最新鲜、最美味的米线。为了庆祝六一,蒙自源特意为孩子们准备了一场别开生面…

云数融合与大数据技术在日常生活中的创新应用探索

前言 移动云模型服务产品在中国移动旗下主要包括云计算、大数据、人工智能等服务,它依托广泛的算力资源(4N31X)、丰富的网络接入资源和高品质云专网,实现算网端资源一站式开通,构建企业级一体化解决方案。 文章目录 前言云计算的日常应用智…