众所周知,jetson nano是一款非常实用且性能强大的AI开发板。很多朋友在拿到这块板子之后第一件事想的就是跑一下人脸识别功能。当人脸识别成功的时候那种喜悦是每个开发人员都很享受的。今天来介绍一下如何用最快的方式来实现jetson nano的人脸识别功能。
网上其他的人脸识别资料都是一种普遍现象:先是让你配置一大堆文件,更新一大堆包,然后给你说各种不适合新手的ubuntu操作,到最后跑起来的概率非常小。更况且对于不熟练ubuntu操作系统的人来说,一旦配置环境出现问题,再想解决就要花很长的时间。
所以今天我所介绍的方法是能够确保你在极少的操作下就能实现人脸识别,而且几乎不需要配置任何的环境, 此教程更适合ubuntu系统的新手。
以下是我的工作流程:
我所使用的板子是B02的,下图是我所烧写的系统镜像:
为了避免开发人员都体会过的玄学现象,请确保您的镜像文件的名字和我的完全一样。
打开文件夹之后,也确保你的镜像文件的名字和我的一样,如下图所示:
只要你烧写的镜像文件和我的一样,那么就开始详细介绍人脸识别。在此烧写系统镜像的操作将不做详细探讨。
在看到你的jetson nano桌面之后,直接右击屏幕,点Open Terminal 打开终端,新建一个python 文件,具体指令为: vim face_detect1.py 如下图所示:
你们看到的其他的教程里很多肯定都是上来直接让你们配置各种文件,更新各种包,其实根本不需要。因为像python3, opencv这些jetson nano系统里本身就是自带的,配置来配置去很有可能出现问题,到时候连兴致都没有了。
这里简单解释一下,vim face_detect1.py的意思就是新建一个文本文件,其中要写Python代码,好比说你想写一个hello world, 你让python 文件名是hello.py, 那么你直接在终端输入 vim hello.py就行了。换句话说,就像在vscode里新建一个代码文件一样。很多其他的教程都是让你配置一大堆文件,到最后直接给你放代码。把你弄的连在哪儿新建Python文件都不知道。
回到正题,在输入了 vim face_detect1.py 之后,你会看到这样一个界面:
此时,你想输入东西是没有反应的,很多人的第一反应就是习惯性的输入 import cv2。所以,你需要先按一下键盘上的a, 方可开始写代码。
以下是人脸识别功能的全部代码:
import cv2
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
while True:
_,img = cap.read()
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray,1.1,4)
for(x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
cv2.imshow('img',img)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cap.release()
其中蓝色的那一行至关重要,括号里的haarcascade_frontalface_default.xml是此程序的核心,没有它,你的人脸识别根本跑不起来。此代码的有些教程(包括国外教程)更奇葩,直接给你放上面的代码,不告诉你需要下载这个至关重要的文件。我是真的不明白这些谜之操作。
这是haarcascade_frontalface_default.xml文件的Github下载地址: https://github.com/opencv/opencv/tree/master/data/haarcascades. 在进入这个页面后,确保你找到和我提供的文件名字完全一样的文件。
如果上面的链接网站无法进入或打开,那么这是另外一条下载链接,这条链接下载需要积分://download.csdn.net/download/u011262200/10651807?utm_source=bbsseo
在下载了之后,确保你仔细阅读文件注释里的版权声明和规则,我们要支持原创,重视版权保护,这一点至关重要。
下载成功之后,确保这个文件在你jetson nano里的这个位置:
左边红色标注的位置是你需要先点击的位置,右边蓝色的标注是你接着要点击的位置。
在确保了你的haarcascade_frontalface_default.xml文件放到这个位置之后,回到我们的代码界面:
确保你的代码准确无误后,我们需要按下 esc 按键, 然后 ctrl + : (ctrl + 冒号), 最后输入wq, 再点回车 (这个过程是让你退出编辑模式,然后保存代码),就回到了我们的终端界面. 操作过程如下图所示:
回到终端界面后,直接输入 python3 face_detect1.py (如下图所示)再耐心稍等片刻,程序就跑起来了!
如果按下回车之后,你的终端显示有关pipline的问题,那么只需要在终端输入命令:sudo apt-get install libcanberra-gtk-module再按回车安装就行。不过我第一次用jetson nano跑人脸识别的时候虽然出现了这个问题提示,但不影响跑代码.
下图是识别过程的效果,屏幕会把你的脸用框框起来,想退出直接按键盘 esc就行
这就是本次教程的全部内容。如果有问题欢迎大家随时提出!
最后再重复一下,这条教程只确保usb摄像头,板载CSI摄像头并不一定成功,usb摄像头是我亲测有效的