基于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-freedeb 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-freedeb 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-freedeb 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 timecap = 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.mzph.cn/diannao/20151.shtml

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

相关文章

WalleWeb简化你的DevOps部署流程

walle-web:简化部署流程,提升开发效率,Walle Web让DevOps触手可及 - 精选真开源,释放新价值。 概览 Walle Web是一个功能强大且免费开源的DevOps平台,旨在简化和自动化代码部署流程。它支持多种编程语言,包…

短剧系统源码:构建互动娱乐的新平台

随着数字媒体的兴起,短剧成为了一种新兴的娱乐形式,它以紧凑的叙事和快速的节奏迎合了现代观众的观看习惯。短剧系统源码的开发,为短剧内容的创作、传播和消费提供了一个全面的技术解决方案。本文将探讨短剧系统源码的关键组成部分及其功能。…

智慧园区整理技术方案(ppt,软件全套建设方案)

智慧园区管控平台整体技术方案 1.平台概述 2.公共安全 3.物业管理 4.综合管理 5.企业服务 平台规划,整理技术架构搭建,统一门户,lot物联平台,视频云管理平台,GIS服务平台,服务器架构,统一身份认…

23.Labview中的数值类型讨论 ---- 位(bit)、字节(byte)、I8、U8、单双精度、复数

hello,大家好,本篇向大家介绍一个最常用但最容易让人忽略和最容易犯错的知识:数值。 “数值” 这个概念在Labview中被涉及的还是很多的,几乎任何一个程序都无可避免的会用到,但我相信大家绝大多数人对数值这个概念应用…

简要分析学习spring内存马,劫持马

简要分析学习spring内存马,劫持马 本文主要是通过SpringMemShell这个工程,来对spring内存马进行演示,利用。 写在前面: 参考的是大佬给的流程以及思路,其中的解释与分析非常详细 ----->>大佬的链接 这里的内存马文件取自gi…

第100+9步 ChatGPT文献复现:ARIMA预测百日咳

基于WIN10的64位系统演示 一、写在前面 我们来继续换一篇文章来学习学习: 《BMC Public Health》杂志的2022年一篇题目为《ARIMA and ARIMA-ERNN models for prediction of pertussis incidence in mainland China from 2004 to 2021》文章的模拟数据做案例。 这…

hadoop(1)--hdfs部署(亲测可用)

一、准备: 1、三台集群部署,配置hosts #cat /etc/hosts 192.168.46.128 node1 #nameNode dataNode secondaryNameNode 192.168.46.129 node2 #datanode 192.168.46.130 node3 #datanode说明: NameNode: 主节点管理者 DataNode&…

LNMP部署及应用

目录 1.LNMP概述 Nginx 特点 Nginx 作用 2.分布式部署LNMP操练 Nginx主机:CentOS 7-1 PHP主机: CentOS 7-2 1.LNMP概述 Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行&…

CPU/GPU/FPSGO,负载调试/设置命令开关

CPU/GPU/FPSGO,负载调试/设置命令开关 首先,进入: adb shell cat sys/kernel/ged/hal/gpu_utilization 查看GPU的负载情况。输出三个数字,第1个表示使用率,第3个表示空闲率。 echo 0 /sys/kernel/fpsgo/common/force…

Linux网络-使用Tcp协议进行网络通信并通过网络接口实现远端翻译

文章目录 Tcp协议Tcp协议常见API接口1. int socket(int domain, int type, int protocol);2. int bind(int socket, const struct sockaddr *address, socklen_t address_len);struct sockaddr 3. int listen(int socket, int backlog);4. int accept(int socket, struct socka…

计算机网络——如何保证 TCP 传输的可靠性

TCP 是传输层上的协议,它是可靠的,面向连接的。 概括 1. 设置传输格式,包括分为 TCP 段、使用校验和、使用序列号 2. 数据丢失之后的重传,超时重传、快速重传、SACK 选择确认、D-SACK 重复选择确认 3. 流量控制,控…

字符串-至多包含K种字符的子串中最长子串(mid)

一、题目描述 二、解题思路 借鉴以下题目思想,使用双指针,外层循环右侧指针移动,内存循环左侧指针移动 字符串-最长不含重复字符的子字符串(mid)-CSDN博客文章浏览阅读622次,点赞17次,收藏4次。java刷题:…

探索第三方美颜SDK:美颜插件的技术原理

本篇文章,我们将深入了解第三方美颜SDK,主要探讨关于美颜插件的工作机制与算法。 一、第三方美颜SDK的概述 第三方美颜SDK是由专业团队开发的一套用于实现美颜功能的软件开发工具包。它通常包括了各种美颜算法、滤镜效果、人脸识别等核心技术&#xff…

Kafka broker的新增和剔除(服役与退役)

说明:集群现有broker:node1,node2,node3三个,broker.id分别为0,1,2 已有两个topic:products、cities 1、退役(Kafka集群中减少一个服务器broker2) 退役后要保证剩下的服务器数量大于等于备份数&#xff0c…

软件设计不是CRUD(21):在流式数据处理系统中进行业务抽象落地——需求分析

本文主要介绍如何在数据处理系统中应用业务抽象的设计思想。目前业界流行的数据处理方式是流式处理,主流的流式处理引擎有Apache Spark,Apache Flink等等。本文选择Apache Flink作为实战案例的落地。由于本文主要是讲解设计思想和流式处理引擎相结合的方…

排八字软件有哪些?

排八字软件有哪些?在市面上有很多排八字的软件可供选择,其中一些比较知名的有: 无敌八字排盘软件:这是一款功能强大的八字排盘软件,提供详细的八字解析和命理分析服务,且完全免费。 网易星盘:网…

【一百】【算法分析与设计】N皇后问题常规解法+位运算解法

N皇后问题 链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 给出一个nnn\times nnn的国际象棋棋盘,你需要在棋盘中摆放nnn个皇后,使得任意两个皇后之间不能互相攻击。具体来说,不能存在两个皇后位于同…

自用了很久的一款强制卸载软件,超级好用!!!

Ashampoo UnInstaller是一款由Ashampoo公司开发的专业卸载工具,它提供了比Windows自带卸载功能更为彻底的程序卸载解决方案。是一款功能强大的卸载工具,旨在帮助用户彻底删除不需要的程序和应用,卸载难以卸载的软件工具,此外他还有…

面试杂谈k8s

其实看我之前的博客,k8s刚有点苗头的时候我就研究过,然后工作的时候间接接触 也自己玩过 但是用的不多就忘记了,正苦于不知道写什么,水一篇 用来面试应该是够了 支持云应用开发、运行与运维一体化的云应用平台软件应运而生 k8s核…

智慧车站管理:提升地铁站新质生产力的策略

应用图扑自研产品 HT for Web 结合 BIM 技术,搭建轻量化的 WebGIS 智慧车站系统。 该系统通过整合轨道交通信息,实现了车站数据的多维互联与融合。提升了车站信息管理效率和运营效能,并优化了乘客出行体验。对构建智能、高效、环保的轨道交通…