赞
踩
本节继续介绍有关Jetson Nano开发环境的配置,包括JupyterLab、扩展库的安装等。
目录
用于Python程序开发的IDE软件较多,功能强大的如PyCharm,轻量级的有Spyder,介于两者之间的Visual Studio Code(简称VS code)。具体安装哪种IDE工具,各位可根据个人的喜好自行选择,各IDE软件的安装和配置略有差别,请自行搜索。
相对于功能强大的IDE软件,在算法设计阶段,博主更倾向于使用类似Jupyter Notebook的工具,一边整理资料,一边进行代码的编辑和测试。因此本节将重点介绍该软件在Jetson Nano平台上的安装。
JupyterLab 是 Jupyter 主打的最新数据科学生产工具,JupyterLab 包含了Jupyter Notebook所有功能,并升级增加了很多功能。
首先安装某些依赖,至于这些依赖不安装有什么影响,说实话,我目前也不清楚。
sudo apt install nodejs npm
接下来,安装libffi-dev,
sudo apt install libffi-dev
接下来,就是本节的主角了,使用pip3安装Jupyterlab,
pip3 install jupyter jupyterlab
整个过程较长,经过几分钟的等待,以及终端窗口大段的warning提醒,终于完成了Jupyterlab的安装。一定要先重启机器,目的是让系统自动改写默写Path变量。然后在命令窗口键入jupyter lab
,系统会正常启动浏览器,然后就会在默认的路径下创建一个未命名的ipynb文件,并等待编辑。
看到熟悉的notebook的编辑窗口,真是感觉亲切至极。到此算是完成Jupyterlab的基本设置,但这才刚刚开始,还有更多内容等待设置,当然这些设置并不都是必需的,大家可根据个人的编程习惯,自行浏览。
下面介绍生成Jupyterlab的配置文件,并完成修改的流程。
首先使用以下命令,生成Jupyterlab的配置文件:
jupyter lab --generate-config
可使用编辑命令,修改配置文件:
nano /home/jetson/.jupyter/jupyter_lab_config.py
至于设置内容,可根据个人需要自行确定,不再单独说明。
使用一下语句,添加界面对中文的支持。
pip3 install jupyterlab-language-pack-zh-CN
完成中文包的安装后,即可将Jupyterlab的界面设置为中文。
为了方便地实现计算机视觉、机器学习和深度学习等功能,需要安装各种对应的扩展库,如OpenCV、PyTorch库等。
(a) 安装OpenCV
网上有很多有关Jetson Nano下安装OpenCV的教程。如果你和我一样,并没有使用Anaconda类的环境,则无需专门安装该库。这是因为Jetson Nano原系统中自带OpenCV库,而且版本不低(应该是4.1版)。
进入Python运行环境,然后键入以下命令,查询目前系统下OpenCV安装的版本信息,如下所示:
- pkg-config opencv --libs
- pkg-config opencv --modversion
如果非要重新安装,按照网上帖子的说法,不能使用pip安装,否则可能存在版本问题。但我并没有自己尝试,大家可自行验证。相反,建议各位使用sudo安装,命令如下:
sudo apt-get install python3-opencv
除此之外,经本人测试,像numpy、scipy、matplotlib等科学计算常用的扩展库,系统已经自带,不建议重新安装,否则可能引起版本冲突等问题
至此,就搭建起来了Jupyterlab+Python+OpenCV的最简开发环境了。
为了验证上述过程是否配置成功,在此选用上述软硬件平台,完成一个典型的计算机视觉任务任务:基于单幅彩色图像的人脸检测。
人脸检测(Face Detection)完成的是从含有人脸的图像或视频流中自动检测人脸所在的位置,它是人脸识别系统中的重要环节。
本例程旨在实现一种基于Jetson Nano平台的人脸检测方法。在介绍具体过程之前,需要提前说明几点:
下面给出手把手教程,请各位参考。
(1)创建工程文件
该例程没有使用单独的IDE工具,而是在Jupyter Lab环境下完成的。因此,首先打开命令窗口,键入“jupyter lab”,创建新的ipynb文件。
(2)加载必要的扩展库
本实例使用OpenCV完成人脸检测,使用Matplotlib库用于图像的显示,因此,需要事先加载这两个扩展库,如下图所示。
- import cv2
- from matplotlib import pyplot as plt
(3)读取彩色图像
使用cv2中的imread函数,读取本机的彩色图像。注意,需要将该图片存放在与ipynb文件相同的路径下。另外,为了便于后续处理和显示方便,需将读取的图像分别转换到RGB空间和灰度图像。
- img = cv2.imread('./lena.jpg') # 读取图片
- img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转换为灰色图像
- img_color = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 转换为RGB彩色图像为了显示方便
(4)加载分类器,检测人脸
在此直接调用了OpenCV提供的具有人脸检测功能的分类器文件“haarcascade_frontalface_default.xml”。在调用时,也需要将 该文件复制到当前路径下。该文件在系统中的存放路径是:“/usr/share/opencv4/”。
- # 调用OpenCV人脸识别分类器
- classifier = cv2.CascadeClassifier( "haarcascade_frontalface_default.xml" )
- color = (0, 255, 0) # 定义绘制颜色(绿色)
- # 调用分类器,完成人脸检测
- faceRects = classifier.detectMultiScale( gray, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))
(5)显示人脸检测结果
经过上一步,检测到的人脸区域存放在了faceRects中,接下来依次画出各人脸对应的矩形区域。为了显示方便,将含有人脸区域标注信息的图像单独命名。另外,在此调用了matplotlib提供的imshow函数,完成图像显示。
- img_result = img_color.copy()
- if len(faceRects): # 大于0则检测到人脸
- for faceRect in faceRects: # 单独框出每一张人脸
- x, y, w, h = faceRect
- # 框出人脸
- cv2.rectangle(img_result, (x, y), (x + h, y + w), color, 2)
-
- plt.figure(figuresize(12,4))
- plt.subplot(121), plt.axis('off'),plt.title('input image'),plt.imshow(img_color)
- plt.subplot(122), plt.axis('off'),plt.title('result'),plt.imshow(img_result)
处理结果如下:
最终总结一下。我们用两节的篇幅,介绍了如何搭建一个简易的Jetson Nano开发平台,其中包括系统安装、系统设置、开发环境配置等,并较详细地介绍了如何配置一个Python+OpenCV+JupyterLab极简开发环境,最后通过实现一个经典的人脸检测实例,验证了所搭建的开发系统的有效性。
下一节,我们将进一步介绍如何在Jetson Nano平台上调用摄像头,如何处理视频文件,并实现一个简单的行人检测实例。
(本节初稿完成时间:2024-03-19)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。