基于Raspi的Opencv-Python开发笔记

news2024/10/7 16:21:35

本文所有未强调 “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照片,说明摄像头也成功工作了

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

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

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

相关文章

解决找不到api-ms-win-crt-runtime-l1-1-0.dll问题的5种方法

电脑已经成为我们生活和工作中不可或缺的工具,然而,由于各种原因,我们可能会遇到一些常见的问题,其中之一就是电脑缺失api-ms-win-crt-runtime-l1-1-0.dll文件。这个问题可能会导致电脑出现错误提示、程序无法正常运行等困扰。为了…

Zookeeper复习

一、入门 1、概念 zookeeper文件系统通知机制 2.特点 1)、一个领导者,多个跟随者组成的集群。 2)、集群中只要有半数以上存活机制,zookeeper集群能正产服务。zk适合安装奇数台。 3)、全局数据一致:每…

一次 K8s 故障诊断:从 CPU 高负载到存储挂载泄露根源揭示

一、背景 现代软件部署中,容器技术已成为不可或缺的一环,在云计算和微服务架构中发挥着核心作用。随着容器化应用的普及,确保容器环境的可靠性成为了一个至关重要的任务。这就是容器SRE(Site Reliability Engineering&#xff0c…

【强烈推荐】四元数与三维旋转

目录 1 强烈推荐讲解四元数与三维旋转的这篇文章,深入浅出2 笔记2.1 复数2.1.1 复数的定义2.1.2 复数的乘法与二维旋转 2.2 三维空间中的旋转2.2.1 角轴2.2.2 旋转的分解 2.3 四元数2.3.1 四元数的定义2.3.2 四元数的乘法2.3.3 四元数与三维旋转2.3.4 三维旋转的矩阵…

【Excel】Excel中将日期格式转换为文本格式,并按日期显示。

【问题需求】 在使用excel进行数据导入的过程中, 有的软件要求日期列必须是文本格式。 但是直接将日期列的格式改为文本后,显示一串数字,而不按日期显示。 进而无法导入使用。 【解决方法】 使用【TXET】函数公式进行处理, 在单…

转转回收业务策略中心的实践

1 背景 回收业务发展日益壮大,我们在邮寄、上门、门店三大履约模式下的业务逻辑日益复杂。同样都是在做回收这一个业务,即便履约方式不同,也有很多业务概念是一致的。为了避免各个业务闷头造轮子,同时又能拉齐三端的业务标准&…

数据库(19)——字符串函数

函数是指一段可以直接被另一段程序调用的程序代码。 常用的函数 函数功能CONCAT(S1,S2...Sn)字符串拼接LOWER(str)将字符串全部转换为小写UPPER(str)将字符串全部转换为大写LPAD(str,n,pad) 用字符串pad对str的左边进行填充RPAD(str,n,pad)用字符串…

这款国内版Bookstack平替也很好用

对于企业、团队或个人来说,一个高效、易用的知识库系统就是提升工作效率和团队协作的利器。一款国内版的BookStack平替——HelpLook AI知识库,它不仅功能强大,而且操作简单,对于国内使用者来说刚刚好,跟着LookLook同学…

DP读书:《ModelArts人工智能应用开发指南》(一)人工智能技术、应用平台

怎么用ModelArts人工智能应用 训练底座训练案例 盘古矿山模型Main config.py 训练底座 训练案例 盘古矿山模型 Main 下面是快速助手 https://support.huaweicloud.com/qs-modelarts/modelarts_06_0006.html 准备开发环境 在ModelArts控制台的“ 开发环境 > Notebook”页面…

项目部署服务器--浏览器拒绝访问问题

一、检查自己的环境 是本地环境、还是虚拟环境 当您使用 Gunicorn 启动 Flask 应用并监听 0.0.0.0:5000 时,您的 Flask 应用已经可以在服务器上运行并通过该端口提供服务了。但是,0.0.0.0 是一个特殊的 IP 地址,它表示“所有可用的网络接口”…

数仓建模—指标体系指标拆解和选取

数仓建模—指标拆解和选取 第一节指标体系初识介绍了什么是指标体系 第二节指标体系分类分级和评价管理介绍了指标体系管理相关的,也就是指标体系的分级分类 这一节我们看一下指标体系的拆解和指标选取,这里我们先说指标选取,其实在整个企业的数字化建设过程中我们其实最…

Unity3d使用3D WebView for Windows and macOS打开全景网页(720云)操作问题记录

问题描述 使用Unity3d内嵌网页的形式打开720云中的全景图这个功能,使用的是3D WebView for Windows and macOS插件,720云的全景图在浏览器上的操作是滑动鼠标滚轮推远/拉近全景图,鼠标左键拖拽网页可以旋转全景图内容。网页的打开过程是正常…

右键Open with VSCode打开Vue3项目

之前看到一些同事能够对项目根目录进行右键打开项目到 Microsoft VS Code ,当时觉得挺不错的,于是乎今天自己折腾了一遍。 目录 1、创建vue3项目 2、更改注册表 # 打开注册表编辑器(Registry Editor) # 导航到以下注册表路径 …

揭秘c语言储存类别

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文将整理c语言的储存类型的知识点 储存类型概念 描述:用于解决内存开辟与解放的时间的问题。跟作用域没啥关系。 但是呢,他也是能影响到程序的运行的,所以是很关键的。 类型: auto :自…

8款监控电脑屏幕的软件排名(屏幕监控软件TOP8)

8款监控电脑屏幕的软件排名(屏幕监控软件TOP8) 作为企业管理者都想对企业的员工和电脑设备了如指掌,毕竟日防夜防家贼难防,利用电脑泄密者数不胜数,为此需要对电脑屏幕实施监控,小编为你推荐几个屏幕监控软…

WPS的JSA算国产编程语言,IDE,脚本工具吗?javascript代替VBA

现在wps用javascript代替VBA,应该算很成功了吧。 如果可以独立出来变成一个脚本语言,简单的IDE(本身也有类似VBA,不要寄宿在WPS里面运行,这样就可以变成VBS一样执行脚本了,用来开发按键精灵,LUA一样的脚本很不错 以下…

k8s练习--StorageClass详细解释与应用

文章目录 前言StorageClass是什么 一、实验目的配置过程 二、实验环境实验步骤一、配置网络存储NFS:1.主机基础配置2.配置 NFS: 二、开启rbac权限:三、创建nfs-deployment.yaml四、创建storageclass资源五、验证:1.创建PVC验证2.创建一个pod验…

RabbitMQ怎么保证可靠性

RabbitMQ怎么保证可靠性 前言生产端问题解决方案代码验证 RabbitMQ问题消费端问题解决方案代码验证 总结 前言 RabbitMQ相信大家都非常熟悉了,今天咱们来聊聊怎么保证RabbitMQ的可靠性。 那什么时候会出现问题呢? 第一种是生产端出现的问题。我们向队…

postgresql根据某个字段去重获取整行数据

背景:在一些情况下我们需要对数据进行去重统计,group by就行,但是一些特殊情况下我们要根据某个字段去重之后获取非聚合字段的值,这个时候在mysql非严格模式下可以直接执行,但是在严格模式和postgresql里面是直接报错的…

鸿蒙开发接口安全:【@system.cipher (加密算法)】

加密算法 说明: 本模块首批接口从API version 3开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import cipher from system.ciphercipher.rsa rsa(Object): void RSA 算法加解密。 系统能力: SystemCapabil…