你应该了解的 OpenCV

带领大家了解 OpenCV。

在本系列上一篇文章中,我们带领大家掌握了颜色空间动态调节技巧。在本篇文章中,我们将带领大家了解 OpenCV。

前面连续几篇在 Jetson Nano 2GB 上,执行多个简单且实用的 Python 的 OpenCV 项目,都是轻松调用 JetPack 预装的 OpenCV 就能实现的功能,不需要额外安装其他库,包括人脸与眼睛检测的范例。

JetPack 为 Jetson Nano 2GB 安装的 OpenCV,是经过 NVIDIA 特调过的,因为 Jetson Nano 2GB 的目的是要成为边缘计算设备。由于各项计算资源都相对局限,因此 JetPack 所提供的 OpenCV 主要保留计算机视觉中最常用的基础功能。

以下就整理几个 Jetson Nano 2GB 上最常遇到的 OpenCV 问题:

1. 这个 OpenCV 是什么版本?

答:这里检查 OpenCV 版本的方法有很多种,下面两种是最简单的:

(1) 直接执行 opencv_version (如下截屏):

(2) 由于这里的 OpenCV 使用 dpkg 工具进行安装,因此可以使用以下指令检查版本:

第二种方法还能看到安装了支持 Python 的版本,以及 Samples 范例。

#### 2. 这个 OpenCV 支持哪个 Python 版本?

答:JetPack 为 Jetson Nano 2GB 安装了 2.7 与 3.6 两个版本 Python 开发环境,可以分别执行以下指令去分别确认。


表示这个 OpenCV 支持 2.7 与 3.6 这两个版本的 Python。

3. 这个 OpenCV 支持 CUDA 计算?

答:这里有个最简单的指令“opencv_read_cuda”,在任何地方执行,显示如下:

这里得到的答案颇令人意外,居然是“NO”,表示不支持 CUDA。

这是因为前面所说,为了节省 Jetson Nano 2GB 的计算资源,因此这个 OpenCV 只提供最基本计算机视觉的功能,连 NVIDIA 自己的 CUDA 支持部分也去除。如果需要使用支持 CUDA 功能的 OpenCV 版本,需要从 OpenCV 官网下载源代码进行安装,这类教材网上有很多,请自行处理。

#### 4. 这个 OpenCV 支持哪些库?

答:最简单的方式就是直接检查已安装的 lib 内容,请执行以下指令:

可以根据上述列表找出已安装的列表。

#### 5. 如何取得 OpenCV 完整的安装与支持信息?

答:可以在 python 里汇入 cv2 之后,执行 cv2.getBuildInformation(),如下图:

下面还有非常多的信息,例如与 C/C++ 有关的(如下截屏):


已安装的模组(如下截屏):

例如上图就能看到对 FFMPEG、GSTREAMER 与 v4l/v4l2 的支持版本。

对 Python 的支持(如下截屏):

信息内容非常多,请自行阅读。

6. 需要升级对 Python 的支持?例如执行 pip3 install opencv-python 或 sudo apt install python3-opencv

答:这两种方式都会产生问题,建议不要使用。

  • pip install opencv-python 安装方法只对 Python3 有效,但执行之后可能会影响稳定性。这次尝试的结果会造成“code-dump”错误。
  • sudo apt install python-opencv python3-opencv 会使 OpenCV 版本降为 3.2.0 也不合适使用。

以上针对 NVIDIA JetPack 为 Jetson Nano 2GB 所提供的 OpenCV 开发环境,以及大部分开发者最常见的问题,提供一个简单整理。

 


评论:
相关文章
乐高42177奔驰G500超深度评测

乐高42177奔驰G500套装共有2891个零件‌,套装分为20个步骤,拼装时间大约需要6个小时‌。


SPIKE 科创套装 45678零件清单

SPIKE 科创套装 45678零件清单


基于树莓派搭建小型云计算集群

拥有一个私人的云计算平台是一件很酷的事情。


Arduino ESP32获取芯片、RAM信息

本文介绍如何使用Arduino-ESP32库中的API函数获取ESP32的芯片、RAM信息等,并提供了一个示例程序代码。


一份新手M5Stack入坑指南

M5Stack产品快速上手指南


工程思维,地球上最聪明的人正在运用的关键思维

工程思维是以解决问题为导向的,实施该思维的前几步都是围绕问题,展开的调研和策划,最终得出设计成果。它非常注重迭代意识,设计出的成果将根据需求不断改进,而非一劳永逸。



马达高级控制块(Advanced Motor Controllers Block)

由台湾崇倫國中开发,專給WRO競賽組使用,包含「PD控制器」、「同步移動控制器」、「非線性緩加減速控制器」等。


一文详尽 Python 函数式编程技术

本文对 Python 中的函数式编程技术进行了简单的入门介绍。


《火星救援》里的科学

本文是一篇最全最良心却也最接地气的《火星救援》大科普,文科生也看得懂!

Jetson Nano 基础教程

作者:英伟达小助理   共52讲

Jetson Nano 推出 2GB 内存版本,不仅承袭了 Jetson Nano 所有 AI 开发环境与 IOT 控制功能,也能学习或开发 Python、OpenCV 与 AI 深度学习、ROS 自动控制等应用。

课程