香橙派/树莓派 电脑linux 电赛备赛指南-opencv全过程最简安装,ssh,vnc,USB摄像头驱动和配置环境避坑,手把手教学。opencv视觉入门(一)

夏沫あ 2024-07-25 13:37:01 阅读 90

1、前言(本教程适用于香橙派/树莓派 电脑端ubuntu)

老早就想写博客了把之前的项目都记录下来,但是一直碍于每次做完项目都挺累的,于是就偷懒没写,不过每次做完都有总结,现在已经大三了,觉得应该把自己之前学习过程中遇到的经验或者坑写出来,后面会陆陆续续的发出来,今天先来讲一下有关这份博客的前提背景吧,去年国赛的时候我负责STM32部分但是队友的视觉缺掉了链子,以及前期备赛的不充分,队友之间的磨合不够等等,最终稍有遗憾省二。今年省赛改了赛制,以国赛形式进行,于是再次拉起了一个队伍,这一次希望能做好万全准备进行比赛,因为很大一部分人不会视觉,包括我之前也只接触了有K210的部分,所以也是0基础,大家如果也是类似STM32转视觉的话,我花了半个月天天熬夜踩的坑,重装了十几次系统,希望能够帮到看这篇博客的朋友们。手头上用的是香橙派,但是发现生态还是有所欠缺,并且香橙派还是借的室友的,本来打算后期去买一个二手树莓派来方便比赛的,有天看到有一个开发板体验官的计划,于是参与了一下,很有幸被选中,我将珍惜这个来之不易的机会。感谢贸泽电子的支持。

2、香橙派/树莓派区别(电脑端linux跳过这步)

其实本质一样都是跑在arm端修改后的ubuntu,香橙派大部分情景下使用树莓派的教程都是可行的,不过有一部分需要参考使用手册,如果是树莓派用户就比较轻松些,另外就是香橙派遇到问题尽量多查看使用手册,以及多使用AI或者上百度谷歌搜索问题,祝你们配置过程一切顺利。香橙派的默认密码是orangepi,如果是树莓派可能是raspberry

3、安装系统(电脑端linux跳过这步)

请自行备一张8G以上的SD卡,32G就差不多,自行去到对应pi的官网上下载img镜像,下载后使用Win32DiskImager工具,插入读卡器选择盘点击写入即可。工具链接放在下面,纯绿色放心使用,点击写入后一直点确定就行了,记得选好磁盘设备。

Win32 Disk Imager download | SourceForge.net

4、配置opencv环境

看到网上很多都说要先换国内源这样下载opencv会快些,经过我这段时间重装不下10次系统的经验,直接用原本的源也挺快的,整个部署所有过程大概半小时就可以完成,所以感觉快不了多少,而且如果用电脑的linux话大概率还要改回来,比较烦人,这里就不过多赘述了。

1.首先安装自动安装依赖软件aptitude,请一定要安装这个,因为很多软件都需要下载依赖,这个可以自动匹配依赖文件并且下载能减少安装时出现的很多问题。而且依赖关系一旦缺少的多了,系统容易挂壁,另外就是,在配置环境的时候系统某个文件出错导致系统进不去很正常,系统崩溃也很正常,多崩溃几次就好了,系统会,人不会,这也是磨练心态的一种方法吧

sudo apt-get install aptitude

2.安装python3

sudo apt-get install python3-pip 

 3.运行python3查看是否成功安装

在终端上直接输入python3

 python3

 出现以下界面就代表安装成功了

4.接下来直接安装opencv 

sudo apt-get install python3-opencv 

接下来耐心等待安装 

安装好后同样的进入python3 

python3

import cv2 

cv2.__version__ 

此时如下图所示出现版本号即代表安装成功 

 

 5.鉴于我们使用的是淘宝上60块的usb免驱摄像头,发现如果以linux原生驱动的话,出来的画面很大,而且很卡还有果冻效应,虽然摄像头支持720p像素,但是考虑到太大了,还是需要更改为640x480的尺寸来跑比较合适。这里我们使用V4L2驱动,跟着下面命令进行V4L2驱动工具安装

sudo apt install v4l-utils//安装v4l2工具包

 插入usb摄像头 此时使用lsusb命令来查看摄像头是否挂载

lsusb

 这里可以看到ID 是USB Camera的摄像头已经设别到了

然后使用以下命令进行查看配置 

sudo v4l2-ctl -d /dev/video0 --set-parm=30//设置帧率 

sudo v4l2-ctl --set-fmt-video=width=640,height=480,pixelformat=MJPG//设置为宽640高为480 输出视频流为MJPG

 如果出现以上则代表摄像头能够正常驱动了,而且是以30帧的形式,如果只显示定死的5帧和10帧那你就需要先使用测试程序跑一遍摄像头再进行以上设置,大概率完美驱动,驱动程序我放下面了,一定注意如果是摄像头直插电脑则使用0号设备 如果是树莓派或者香橙派请默认使用1,cap = cv2.VideoCapture(0, cv2.CAP_V4L2)在这里进行修改,这个我也不理解,香橙派会认定插入的这个设备是第二个设备,可能是已经有设备先占用了,所以大家不妨0,1,2都试试。

初次使用的朋友不知道怎么在ubuntu上跑py脚本,下面简单介绍

首先你先vim xxxx.py //这个xxxx由你自己设置,最好英文

 vim test3.py

按下回车,然后进入到这个界面

然后全选复制以下代码 按下方向键上面的那个ins键用于进入编辑模式,然后再ctrl+shift+v粘贴

 import cv2

cap = cv2.VideoCapture(0, cv2.CAP_V4L2)//如果是摄像头直插电脑则使用0号设备 如果是树莓派或者香橙派请默认使用1

while True:

    ret, frame = cap.read()

    if ret:

        cv2.imshow("frame", frame)

    if cv2.waitKey(1)==27:

        break

cap.release()

cv2.destroyAllWindows()

然后多按几次ESC键退出编辑模式 再按shift+: 在终端窗口左下角会显示:你再输入wq! 然后回车 意思是强制 写入 退出 这样你就把上面这串代码添加进了test3.py这个文件里。

 

输入ls命令查看当前文件夹文件,你就能看到test3.py文件了

 接下来运行python3 test3.py

python3 test3.py

 如果一切正常,这时候会出现视频流画面,如有错误请继续看下去

那么恭喜你,到了这一步已经完成oepncv的安装以及驱动摄像头了,剩下就是代码自己敲了,开启新世界的大门。

但如果你出现了下图这种情况,也不要慌张,这就是上面所提到的 设备没选对,你去把test3.py的cv2.VideoCapture(0, cv2.CAP_V4L2)改成cv2.VideoCapture(1, cv2.CAP_V4L2)大概率就好了。

 5.ssh配置

 这是一个很重要的东西,因为条件有限,又或者不想每次都插屏幕,拔线又麻烦,于是ssh可以直接从你的写代码的电脑上直接命令行操控你的派,可以在不要显示器的情况下完成很多功能,尤其是只有一套键鼠的小伙伴,大大降低了你的插拔频率,不至于浪费时间,如果有多套键鼠,以及多个屏幕的小伙伴,那你可以直接把它当电脑使用,另外就是还要用一个sftp的功能去把你在电脑上写的代码直接通过局域网去推给你的派,这样子就省去了上面那样新建文件还要复制粘贴的繁琐操作。

首先开启你的派的ssh,这个由各家派的官方给的东西来确定,你需要自己去查查手上的派的ssh如何打开,这里没办法统一,所以暂不叙述。不过这个ssh打开后,设置成开机时自动启动,就可以做到无显示屏进行控制了,这里我以香橙派的ssh链接做示例,windows使用putty工具进行ssh链接,linux直接使用ssh命令即可。

1,首先你需要知道你的派所连的局域网的ip地址

请在派上输入ifconfig命令用于查看当前ip地址

ifconfig

 这样192.168.31.202就是我的派在局域网的ip 获得了局域网ip我们就可以通过用户名加ip找到我们的派

如果是在linux系统上进行操作 确保派已开机 在电脑的终端上写入ssh 用户名@IP地址 即可 例如

ssh orangepi@192.168.31.202

接下来就会显示让你输入密码,这个密码是不可见的,所以你只管输入就行,并不是你没法输入密码

密码正确输入回车后就会进入到你的派的终端了 

接下来你就可以做到在电脑写命令,派上执行了。

6.VNC配置 

我们常常碍于有时候想要看看代码执行在arm端上的效果,但是又没法通过ssh的文本形式看到,于是,VNC出现了,它能够直接从我们的电脑上直接看到派当前运行的桌面,这样子你就做到了一个显示器看两个设备的画面了,并且还可以实时控制,以下是我在电脑端的截图

 我们该如何配置呢?很简单,首先你想要一个VNC的软件,电脑端装上它的viewer端,arm端装上它的服务端,那么他们都开启后就可以从电脑上监视arm当前的运行情况了,这里我推荐电脑端安装realvnc 这个是下载地址Download the combined RealVNC Connect installer - RealVNC®

 如果你是windows就装windows客户端,如果是linux就装linux客户端,界面都是一样的

arm端的就是直接通过命令行来安装,碍于篇幅原因,我提供一个我一直参考安装的CSDN的一篇文章,按照他的命令行去安装即可Ubuntu系统安装X11VNC实现远程可视化桌面操作教程_ubuntu22安装x11vnc-CSDN博客

当你在arm端上安装好了x11vnc,并且配置好后,只需要在arm端终端使用 x11vnc即可

x11vnc

 设置好密码后,接下来就会出现以下界面,有端口号就代表开启成功了。

 

还请注意这个PORT端口,首次连接时,你不仅需要IP地址也需要端口号才能来连接

然后你确保arm端x11vnc开启后再打开电脑realvnc客户端,然后按下图配置好后回车即可

 出现框点击确认即可,第一次需要输入密码,这个就是你在arm端上的设置密码,输入正确后,就会出现以下画面,就代表你已经完成了VNC的配置,并且可以远程操作你的派,而且不需要多一套显示器键鼠,只需要在一台电脑上即可,粘贴板也是共享的,你就可以在你电脑上写opencv代码然后通过sftp来把写好的代码发送给派去跑,这样子视觉部分就配完了

7、踩坑

第一个坑,aptitude依赖文件的下载,如果没有这个软甲,那很多依赖关系都要自己配置,另外就是看网上下载opencv还要换到国内源,之前一不小心换了,下好之后换不回去了,导致后面下其他东西都很麻烦,于是跳过了这一步,另外就是,在配置摄像头时,一开始不知道要用v4

l2驱动,导致我以为买的摄像头太垃圾甚至想去换一个了,而且网上有关的内容资料很少,也是各种查找才知道这个方法,然后就是有关代码的编写,我建议安装一个vscode 然后 把python 和通义灵码插件安装上,它可以根据你的注释生成你需要的代码,而且效率很高,你只需要有一个处理图像的思路就可以很快的把代码写出来,所以在我看来,处理图像最关键就是思路,代码反而不是什么大问题,后面的时候我会更一些我学习的思路,期间我踩的最大的坑就是配置完VNC后,派一直卡在进入界面而且一直要求输入密码,然后又重复卡在进入页面输密码,我翻了很多的有关资料都没找到,在贴吧偶然看见一个老哥的贴下面用这种方法就完成了,我也贴出来给有需要的朋友吧,

在派上终端输入

rm /home/用户名/.Xauthority

 删除了这个文件后,这个大坑终于被解决了,我在这上面装了不下十次系统才发现了的问题,也算是一个教训吧,而且玩这些派最不怕的系统挂壁,大不了就重装,写这篇博客的目的也是为了防止后期我的派又挂壁了,要一个一个命令去输,反正多去系统挂壁几次自然就熟练了。

 8、结尾

这篇教程只是这一半个月学习opencv阶段的总结,后面也会继续写一些有关opencv的处理思路,等我偶尔敲代码累了就慢慢的把以前的项目拿出来也发出来供参考一下,另外就是备赛情况也会偶尔拿出来进行阶段性展示,与各位共勉。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。