问题
英伟达官方自带的 Jetson Nano SD 卡镜像中,已经有 OpenCV 库了,查看方法是:在终端中输入 jtop,然后按数字键 “7”,如下所示:
jtop
jtop 安装方法参考:链接: link
sudo pip3 install -U jetson-stats
结果 如下图所示:
从上图中可以看出,官方自带的SD卡镜像中,OpenCV 是不带 CUDA 支持的,如果要让 OpenCV 支持 CUDA,需要重新编译 OpenCV。
方法
网上有很多文章说了用源码在 Jetson Nano 上编译安装 OpenCV 的方法。不过,我最后在外网上找到了更好用的方法,有人已经做好了相关的脚本,做好环境配置后,直接运行脚本即可编译安装。具体参考:
官方论坛 相关问题 链接: link
编译安装脚本下载 链接: link
编译安装方法 链接: link
简要说明
大家可以直接按照上面的三个链接中的说明进行操作,主要参考 “编译安装方法 链接” 中的步骤即可。这里我简要说明一下一些注意事项:
1 编译前要先增加 swap 容量
这一点在链接中有说明,我在查相关资料时,也发现有的人在编译时,遇到了编译进度到 99% 时卡住的现象。原文中是这样说的:
2 swap 大小的修改
我在修改 swap 大小时(修改 /sbin/dphys-swapfile 文件中的 CONF_MAXSWAP=8192,修改 /etc/dphys-swapfile 中的 CONF_SWAPSIZE=8192,要注意,文章中这里说得不明确,要修改两个地方),没有按文章中的方法修改为 “4096”,这样的值刚好在临界点,为了保险,我修改为了 “8192”,SD卡的容量也足够。修改完成后一定要重启并验证是否修改成功!!
3 nano 编辑器可以不安装
文章中安装了 nano 编辑器,其实可以不安装,用已经有的文本编辑器编辑文件即可,如 vim。
4 执行完升级命令后
执行完 “sudo apt-get upgrade” 命令后,L4T 和 Jetpack 也升级了,所以,如果你对 L4T 和 Jetpack 版本有要求,这里要注意一下。
5 OpenCV 版本问题
链接中给的脚本,可以安装不同的 OpenCV 版本,我选择了 OpenCV4.8.0 这个脚本,但是,我将其中的 “4.8.0” 全改成了 “4.8.1”,让它编译安装的是 OpenCV4.8.1 这个版本,没有遇到问题。
但是,实际上,我先运行的是 OpenCV4.9.0 这个脚本,结果,出错了 “fatal error: cuda/std/tuple: No such file or directory”,如下:
我查了错误中提到的 “tuple” 头文件,如下:
它并不在 “cuda/std” 目录下,所以我怀疑,我的 jetson nano 当前的环境,不适合安装 OpenCV4.9.0 这个版本,于是我删除了运行 OpenCV4.9.0 这个安装脚本时产生的文件,重启设备,并重新编译安装了 OpenCV4.8.1 版本。
6 文件下载问题
在运行脚本编译安装时,会下载一些文件,有些文件因为在 github 上,没有下载下来,但是,编译安装仍然顺利进行了,目前没发现问题。
7 编译安装耗时
开始时间:18:17:00
结束时间:20:14:15
上面图中是在等待输入密码进行安装,后面的安装时间约 4 分钟。
总耗时约 2 小时。
测试结果
用 jtop 命令查看:
Python 查看:
最后还写了一个 C++ 程序,测试了一下,暂时没有发现任何问题。程序用的是:链接: link 的第 30 讲:实时人脸检测,以及:链接: link