OpenCV项目开发实战(原书第2版)
上QQ阅读APP看书,第一时间看更新

1.2 安装开发机

我们可以在台式机、笔记本电脑、甚或简陋的树莓派上开发OpenCV应用程序(参见1.5节)。我们开发的大多数应用程序占用的内存都不会超过128兆字节,因此它们仍然可以在老旧电脑或是低性能机器上运行(尽管速度缓慢)。为了省时,最好先在最快的机器上开发,然后再在那些较慢机器上进行测试。

本书假设在你的开发机器上已安装了下列操作系统之一:

·Windows 7 SP 1或更高版本

·Mac OS 10.7(Lion)或更高版本

·Debian Jessie或更高版本,或下列衍生版本:

·Raspbian 2015-09-25或更高版本

·Ubuntu 14.04或更高版本

·Linux Mint 17或更高版本

·Fedora 28或更高版本,或下列衍生版本:

·RHEL 8或更高版本

·CentOS 8或更高版本

·openSUSE Leap 42.3、openSUSE Leap 15.0或更高版本,openSUSE Tumbleweed或衍生版本。

其他类Unix系统也能够工作,但不在本书讨论范围之内。

你要准备一个USB网络摄像头及其必要的驱动程序。大多数网络摄像头都提供了在Windows和Mac上安装驱动程序的说明。通常,Linux发行版包括USB视频类(USB Video Class,UVC)Linux驱动程序,在http://www.ideasonboard.org/uvc/#devices中列出了它支持的许多网络摄像头。

我们将安装下列组件:

·在Mac上,第三方包管理器将帮助我们安装库及这些库的依赖项。我们将使用MacPorts或Homebrew。

·Python开发环境——在本书编写期间,OpenCV支持Python 2.7、3.4、3.5、3.6和3.7版本。本书中的Python代码支持所有这些版本。作为Python开发环境的一部分,我们将使用Python包管理器pip。

·流行的Python库,例如NumPy(用于数值函数)、SciPy(用于数值和科学函数)、Requests(用于Web请求)、wxPython(用于跨平台的图形用户接口GUI)。

·PyInstaller,一种跨平台的工具,用于将Python脚本、库和数据打包成可分发的应用程序,这样用户机就无须安装Python、OpenCV和其他的库了。就本书而言,创建可再分发的Python项目是一个可选的主题。我们将在第2章中介绍基础知识,但你需要自行测试和调试,因为PyInstaller(与其他Python打包工具类似)在不同操作系统、Python版本和库版本中所展示出的行为并不完全一致。PyInstaller不能很好地支持树莓派或其他ARM设备。

·我们还可以选择使用C++开发环境从而从源代码编译OpenCV。在Windows上,我们使用Visual Studio 2015或后续版本。在Mac上,我们使用Xcode。在Linux上,我们使用标准GCC编译器。

·Python支持OpenCV和opencv_contrib(一组额外的OpenCV模块)的编译,并对某些桌面硬件进行优化。在编写本书时,OpenCV 4.0.x是最新的稳定版本,我们的指令是为该版本量身定制的。但是,总的来说,本书中的代码也适用于之前的稳定版本OpenCV 3.4.x,对于那些喜欢预先打包编译的用户来说,OpenCV 3.4.x是更广泛使用的一个版本。

·OpenCV的另一个版本支持Java,并对某些Android硬件进行优化。在编写本书时,OpenCV 4.0.1是最新的发布版本。

·Android开发环境包括Android Studio和Android SDK。

·在64位Windows或Mac上,一个名为Unity的三维游戏引擎。

Android Studio占用很大的内存,即使你希望用树莓派来开发桌面应用程序或Pi应用程序,但是开发Android应用程序仍需要使用更多的内存。

对于Python和OpenCV环境,让我们将安装过程分解为三组平台相关的步骤,对于Android Studio和OpenCV环境加上一组与平台无关的步骤,对于Unity和OpenCV环境再加上另一组与平台无关的步骤。

1.2.1 在Windows上安装Python和OpenCV

在Windows上,我们可以选择安装32位开发环境(使应用程序同时兼容32位或64位Windows)或64位开发环境(使优化后的应用程序只兼容64位Windows)。OpenCV适用于32位和64位版本。

我们还可以选择使用二进制安装程序,或从源代码编译OpenCV。对于本书中的Windows应用程序而言,二进制安装程序足以满足我们的一切需求。但是,我们还讨论了从源代码进行编译的安装选项,因为这种方法可以让我们能够对其他属性(这些属性可能与你未来的工作有关或与其他书中的项目相关)进行配置。

不管如何获取OpenCV,我们都需要一个通用的Python开发环境。我们将使用一个二进制安装程序来安装这个环境。从http://www.python.org/getit/可以获得Python安装程序。下载并运行Python 3.7的最新修订版本(32位版本或64位版本)。

默认情况下,要使用新安装的Python 3.7运行Python脚本,让我们来编辑一下系统的Path变量并添加;C:\Python3.7(假设你的Python 3.7安装在默认位置)。删除之前的所有Python路径,例如;C:\Python2.7。注销并重新登录(或重新启动)。

Python自带一个名为pip的包管理器,它简化了安装Python模块及其依赖项的任务。打开命令行窗口输入并运行以下命令来安装numpy、scipy、requests、wxPython和pyinstaller:

现在,我们有一个选择,我们可以将OpenCV和opencv_contrib的二进制文件作为一个预编译的Python模块安装,我们也可以从源代码编译这个模块。要安装一个预编译模块,只需要运行如下命令:

或者,要从源代码编译OpenCV和opencv_contrib,可以按照“在Windows上用CMake和Visual Studio编译OpenCV”一节中的说明进行操作。

无论是安装预编译的OpenCV和opencv_contrib模块,还是从源代码编译OpenCV和opencv_contrib模块,我们都拥有了为Windows开发OpenCV应用程序所需的一切。如果要开发Android应用程序,我们还需要按照1.3节所述内容来安装Andorid Studio。

在Windows上用CMake和Visual Studio编译OpenCV

要从源码编译OpenCV,我们需要一个通用的C++开发环境。我们使用Visual Studio 2015或更高版本作为C++开发环境。可以使用你购买的任意一个安装媒介,或访问https://visualstudio.microsoft.com/downloads/,下载并运行下列安装程序之一:

·Visual Studio Community 2017,是免费的。

·Visual Studio 2017付费版,有30天的免费试用期。

如果安装程序列出了可选的C++组件,我们应该选择安装所有选项。安装程序运行完成后,重新启动。

OpenCV使用了一组必须安装的名为CMake的编译工具。或者,我们可以选择安装一些第三方库来启用OpenCV中的额外功能。作为一个例子,让我们来安装Intel线程构建块(Thread Building Block,TBB),OpenCV可以利用TBB来优化多核CPU的一些功能。安装了TBB之后,我们将配置和编译OpenCV。最后,我们将确保我们的C++和Python环境能够找到我们编译的OpenCV。

下面是详细的步骤:

1)从https://cmake.org/download/下载并安装CMake的最新稳定版本。需要CMake 3或最新版本。即使我们使用的是64位库和编译器,32位CMake也是兼容的。当安装程序询问更新PATH变量时,请选择“Add CMake to the system PATH for all users”或“Add CMake to the system PATH for current user”。

2)如果你的系统使用代理服务器访问网络,请定义两个环境变量:HTTP_PROXY和HTTPS_PROXY,这两个环境变量的值等于代理服务器的URL,如http://myproxy.com:8080。这就确保CMake可以使用代理服务器下载OpenCV的一些附加依赖。(如果你不确定,请不要定义这些环境变量。你可能没有使用代理服务器。)

3)从http://opencv.org/releases.html下载OpenCV Win包(选择最新版本)。下载的文件可能有一个.exe扩展名,但这实际上是一个自解压的ZIP文件。双击该文件,在出现提示时输入任意一个目标文件夹,我们将其命名为<opencv_unzip_destination>,将创建一个子文件夹<opencv_unzip_destination>/opencv。

4)从https://github.com/opencv/opencv_contrib/releases下载opence_contrib的ZIP包(选择最新版本)。将其解压到任意一个目标文件夹,并将其命名为<opencv_contrib_unzip_destination>。

5)从https://www.threadingbuildingblocks.org/download下载TBB的最新稳定版本。它同时包含了32位和64位二进制文件。将其解压到任意一个目标文件夹中,并将其命名为<tbb_unzip_destination>。

6)打开命令提示符。创建一个文件夹来保存我们的编译:

将目录更改为新创建的编译文件夹:

7)安装好依赖项之后,就可以配置OpenCV的编译系统了。要理解所有的配置选项,我们可以阅读<opencv_unzip_destination>/opencv/sources/CMakeLists.txt中的代码。但是,作为一个例子,我们将只使用包含Python绑定和通过TBB进行多处理的一个发行版编译的选项。

·要为Visual Studio 2017创建一个32位的项目,请运行以下命令(用实际路径替换尖括号中的内容)

·或者,要为Visual Studio 2017创建一个64位的项目,请运行以下命令(用实际路径替换尖括号中的内容)

·CMake将生成它是否找到依赖项的一个报告。OpenCV有很多可选的依赖项,所以不必担心缺少依赖项。但是,如果编译没有成功完成,请尝试安装这些缺少的依赖项(很多都可以作为预编译的二进制文件使用)。然后,重复该步骤。

8)现在我们的编译系统已配置好了,我们可以编译OpenCV了。在Visual Studio中打开<build_folder>/OpenCV.sln。选择“Release”配置并构建解决方案。(如果你选择了“Release”以外的其他编译配置,则可能会出现错误,因为大多数Python安装都不包含调试库)。

9)我们应该确保我们的Python安装不包括其他版本的OpenCV。在Python DLL文件夹和Python site-packages文件夹中查找并删除所有OpenCV文件。例如,这些文件的路径可能与C:\Python37\DLLs\opencv_*.dll,C:\Python37\Lib\sitepackages\opencv和C:\Python37\Lib\sitepackages\cv2.pyd模式匹配。

10)最后,我们需要将OpenCV安装到Python和其他进程可以找到的一个位置。为此,右键单击OpenCV解决方案的“INSTALL”项目(位于Visual Studio的“Solution Explorer”面板)并对其进行编译。当这个编译完成后,退出Visual Studio。编辑系统的Path变量并添加;<build_folder>\install\x86\vc15\bin(32位编译)或;<build_folder>\install\x64\vc15\bin(64位编译),这正是OpenCV DLL文件所在的位置。同样,添加;<tbb_unzip_destination>\lib\ia32\vc14(32位)或;<tbb_unzip_destination>\lib\intel64\vc14(64位),这是TBB DLL文件所在的位置。注销并重新登录(或重新启动)。OpenCV的Python模块位于诸如C:\Python37\Lib\site-packages\cv2.pyd之类的路径上。Python可以找到路径所在的位置,因此你不需要再执行任何步骤。

如果你使用的是Visual Studio 2015,那么请用vs2015替换vs2017,用Visual Studio 14 2015替换Visual Studio 15 2017,用vc14替换vc15。但是要注意,对TBB而言,名为vc14的文件夹包含适用于Visual Studio 2015和Visual Studio 2017的DLL文件。

你或许想要查看<opencv_unzip_destination>/opencv/sources/samples/python中的代码示例。

此刻,我们已经准备好了为Windows开发OpenCV应用程序的所有内容。如果还要开发Android应用程序,我们需要安装Android Studio,请参阅1.3节的内容。

1.2.2 在Mac上安装Python和OpenCV

Mac已经预先安装了Python。但是,Apple公司已经根据系统的内部需求对预先安装的Python进行了定制。通常,在Apple的Python上我们不应该安装任何库。如果我们安装了库,库很可能会在系统更新时中断,甚至更糟的是,我们安装的这些库很可能与系统所需要的预装库发生冲突。相反,我们应该安装标准的Python 3.7,然后在其上安装我们所需要的库。

对于Mac,有多种获取标准Python 3.7及其Python兼容库的方法,例如OpenCV。最终,所有这些方法都需要使用Xcode developer工具从源代码编译某些组件。但是,根据我们选择的方法,编译这些组件的任务是由第三方工具以各种方式自动完成的。

首先,让我们设置Xcode和Xcode命令行工具,这些工具为我们提供了一个完整的C++开发环境:

1)从Mac应用程序商店或https://developer.apple.com/xcode/下载并安装Xcode。如果安装程序提供了安装命令行工具的一个选项,那么选中它。

2)打开Xcode,如果出现许可协议,则选择接受。

3)如果还没有安装命令行工具,现在就必须安装这些命令行工具。转到“Xcode|Preferences|Downloads”,单击命令行工具旁边的“Install”按钮。等待安装完成。然后退出Xcode。或者,如果你在Xcode中没有找到安装命令行工具的选项,那么打开终端并运行以下命令:

现在,我们将研究使用MacPorts或Homebrew实现自动编译的方法。这两个工具都是包管理器,它们帮助我们解决依赖问题,并将开发库与系统库进行分离。

通常,我推荐MacPorts。与Homebrew相比,MacPorts为OpenCV提供了更多的修补程序和配置选项。另外,Homebrew为OpenCV提供了更及时的更新。在编写本书时,Homebrew为OpenCV 4.0.1提供了一个软件包,但MacPorts还停留在OpenCV 3.4.3版本。Homebrew和MacPorts都可以与Python包管理器pip共存,尽管MacPorts还没有打包这个版本,但是我们仍可以使用pip来获得OpenCV 4.0.1。通常,不应该在同一台机器上安装MacPorts和Homebrew。

对于Mac,我们的安装方法并没有给出OpenCV的示例项目。要获取这些示例,可从https://opencv.org/releases.html下载最新的源代码包,并解压到任意位置。在<opencv_unzip_destination>/samples/python中找到示例。

现在,可以根据你的个人喜好,开始选择性阅读1.2.2.1节或1.2.2.2节的内容。

1.2.2.1 Mac上的MacPorts

MacPorts提供自动下载、编译和安装各种开源软件(Open Source Software,OSS)的终端命令。MacPorts还根据需要安装这些依赖项。在一个名为Portfile的配置文件中定义了软件的每个部分、依赖项和编译方法。因此,一个MacPorts库就是一个Portfiles集合。

让我们从一个已安装了Xcode及其命令行工具的系统开始吧!下列步骤将通过MacPorts为我们提供一个OpenCV的安装方法。

1)从http://www.macports.org/install.php下载并安装MacPorts。

2)打开终端,并运行以下命令来更新MacPorts:

在出现提示时,输入你的密码。

3)运行以下命令,安装Python3.7、pip、NumPy、SciPy和Requests:

4)Python安装的可执行文件名为python 3.7。要将默认的Python可执行文件链接到Python3.7,并将默认的pip可执行文件链接到这个Python pip安装,让我们来运行以下命令:

5)在编写本书时,MacPorts只有wxPython和PyInstaller相对较低版本的包。让我们使用下面的pip命令安装最新的版本吧:

6)要检查MacPorts是否有一个OpenCV 4包,运行$port list opencv。在编写本书时,会输出下列信息:

·这里,@3.4.3表示OpenCV 3.4.3是MacPorts的最新可用包。但是,如果你的输出显示的是@4.0.0或更新的版本,那么你就可以用MacPorts配置、编译和安装OpenCV 4,运行如下命令:

·通过在命令中添加+avx2+contrib+opencl+python37,我们指定希望opencv变体(编译配置)具有AVX2 CPU优化、open_contrib附加模块、OpenCL GPU优化和Python3.7绑定。要在安装前查看可用变体的完整列表,可以输入以下内容:

·根据我们的自定义需求,我们可以将其他变体添加到install命令。

·另一方面,如果$port list opencv的输出显示MacPorts还没有OpenCV 4包,我们可以用pip代替安装OpenCV 4和opencv_contrib附加模块,运行下列命令:

现在,我们已经拥有了为Mac开发OpenCV应用程序所需的一切内容。同样,要为Android开发应用程序,我们需要安装Android Studio,我们将会在1.3节中介绍Android Studio。

1.2.2.2 Mac上的Homebrew

与MacPorts类似,Homebrew也是一个包管理器,提供终端命令自动下载、编译和安装各种开源软件。

下面我就从一个已经安装了Xcode及其命令行工具的系统开始,下列步骤将为我们提供一个通过Homebrew安装OpenCV的方法:

1)打开终端,运行如下命令,安装Homebrew:

2)与MacPorts不同的是,Homebrew不会自动将其可执行文件放入PATH中。为此,创建或编辑~/.profile文件,并在首行添加下列内容:

·保存文件,运行如下命令,刷新PATH:

·注意,现在Homebrew安装的可执行文件比系统安装的可执行文件具有更高的优先权。

3)查看Homebrew的自检报告,运行以下命令:

遵照给出的所有故障排除建议。

4)现在,更新Homebrew:

5)运行以下命令,安装Python 3.7:

6)现在,我们可以使用Homebrew安装OpenCV以及包括NumPy在内的依赖项了。运行如下命令:

7)同样的,运行如下命令安装SciPy:

8)在编写本书时,Homebrew还没有requests包和pyinstaller包,并且它的wxPython包也是一个相对较低的版本,因此我们将使用pip来安装这些模块。运行以下命令:

现在,我们已经具备为Mac开发OpenCV应用程序所需的一切内容。同样,要开发Android应用程序,我们需要安装Tegra Android发包(Tegra Android Development Pack,TADP),我们会在后文中介绍。

1.2.3 在Debian Jessie及其衍生系统(包括Raspbian、Ubuntu和Linux Mint)上安装Python和OpenCV

有关安装Raspbian操作系统的相关内容,可参阅1.5节。

在Debian Jessie、Raspbian、Ubuntu、Linux Mint及其衍生系统上,Python事先安装好的可执行文件是Python 2.7。我们可以使用系统包管理器apt安装标准库中的NumPy、SciPy和Request。要更新apt包索引并安装这些包,请在终端下运行以下命令:

标准库中wxPython包的最新版各不相同,这取决于具体的操作系统。在Ubuntu 14.04及其衍生版本(包括Linux Mint 17)上,包的最新版本是wxPython 2.8。运行以下命令进行安装:

在Ubuntu 18.04及其更高版本,以及Linux Mint 19等衍生系统上,包的最新版本是wxPython 4.0。运行如下命令进行安装:

在Debian Jessie系列的大多数其他系统上,wxPython 3.0是包的最新版本。运行如下命令进行安装:

标准库中没有提供PyInstaller包。让我们使用Python自带的包管理器pip来获取PyInstaller。首先,要确认安装了pip,运行以下命令:

现在,运行以下命令,安装PyInstaller。

标准库包含了一个python-opencv包,但却是一个较低版本(3.2.0或更低版本,这取决于操作系统),并且缺少opencv_contrib模块,因此就缺少了本书中会用到的一些功能。因此,我们既可以选择使用pip来获取拥有opencv_contrib模块的OpenCV 4,也可以从源代码构建OpenCV 4。想要用pip安装OpenCV 4的预编译版本和opencv_contrib模块,请运行以下命令:

如果你喜欢使用Python 3的可执行文件,即Python 3.4或更高版本(取决于操作系统),请修改上述指令中的所有apt-get命令,用python 3-numpy之类的包名替换python-numpy之类的包名。同样,用pip3命令替换pip命令。

或者,想要从源代码编译OpenCV和opencv_contrib,可按“用CMake和GCC在Debian Jessie及其衍生系统上编译OpenCV”一节中的指令进行操作。

无论是安装了预编译的OpenCV和opencv_contrib模块,还是从源代码编译,在这之后,我们就具备了为Debian Jessie或衍生系统开发OpenCV应用程序所需的一切内容。同样,想要开发Android应用程序,我们需要安装Android Studio,请参考1.3节。

用CMake和GCC在Debian Jessie及其衍生系统上编译OpenCV

要从源代码编译OpenCV,我们需要一个通用的C++开发环境。在Linux上,标准的C++开发环境包含g++编译器和Make构建系统,其中Make构建系统以一个Makefile文件格式定义构建指令。

OpenCV使用一组名为CMake的构建工具,该构建工具自动使用Make、g++以及其他工具。我们需要安装CMake 3或一个更新的版本。此外,我们还将安装几个第三方库。其中一些是标准OpenCV特性所必需的,还有一些是可选的、用于支持一些额外特性的依赖项。

作为一个例子,让我们安装下面这些可选依赖项:

·libdc1394:这是一个以编程方式控制IEEE 1394(火线)摄像头的库,这在工业应用领域中很常见。OpenCV可以利用这个库从这些摄像头采集照片或视频。

·libgphoto2:这是一个通过有线或无线连接以编程方式控制摄像机的库。libphoto2库支持大量来自于佳能、富士、徕卡、尼康、奥林巴斯、松下、索尼和其他厂商的摄像机。OpenCV可以利用这个库从这些摄像机采集照片和视频。

在安装完这些依赖项之后,我们将配置、编译、安装OpenCV。详细步骤如下:

1)在Ubuntu 14.04及其衍生版本(包括Linux Mint 17)上,标准库中的cmake包是CMake 2,这对于我们的目标来说太过陈旧。我们需要确保没有安装cmake包,然后我们需要安装cmake 3包以及其他必要的开发和打包工具。要完成这些,请运行以下命令:

在Ubuntu的最新版本及其衍生版本以及Debian Jessie上,cmake 3包并不存在,而cmake就是CMake 3。运行下列命令安装cmake及其他必要的开发和打包工具:

2)如果你的系统使用代理服务器访问网络,那么定义两个环境变量:HTTP_PROXY和HTTPS_PROXY,它们的值等于代理服务器的URL,例如http://myproxy.com:8080。这样确保CMake可以使用代理服务器为OpenCV下载一些附加依赖项。(如果不确定,不要定义这两个环境变量。你可能没有使用代理服务器。)

3)运行以下命令安装OpenCV的依赖项,这些依赖项用于Python绑定以及从Video-4Linux(V4L)兼容摄像头进行视频采集(包含大多数网络摄像头)。

如果你更喜欢用Python 3,那么在上述命令中用Python 3-dev替换python-dev。

4)运行下列命令,安装可选的OpenCV依赖项:

5)从http://opencv.org/releases.html下载OpenCV源代码的ZIP压缩包(选择最新版本)。解压至任意一个目标文件夹中,我们将其命名为<opencv_unzip_destination>。

6)从https://github.com/opencv/opencv_contrib/releases下载opence_contrib的一个ZIP压缩包(选择最新版本)。解压至任意一个目标文件夹中,我们将其命名为<opencv_contrib_unzip_destination>。

7)打开命令提示符。创建一个文件夹用以存储我们的编译:

将目录更改为新创建的编译文件夹:

8)安装完我们的依赖项后,现在我们来配置OpenCV的构建系统。要想理解所有配置选项,我们可以阅读<opencv_unzip_destination>/opencv/sources/CMakeLists.txt中的代码。但是,作为一个示例,我们将只用到一个发布构建的选项,包含Python绑定、支持OpenGL互操作性以及支持附加摄像头类型和视频类型。要使用Python 2.7绑定为OpenCV创建Makefiles,运行以下命令(但要用实际路径替换尖括号及其中的内容):

或者,要使用Python 3绑定为OpenCV创建Makefiles,运行以下命令(用实际路径替换尖括号及其中的内容,并且如果你的Python 3的版本不是3.6的话,用你的实际版本号替换3.6):

9)运行以下命令,用Makefiles指定的方式编译并安装OpenCV:

现在,我们已经具备了为Debian Jessie及其衍生系统开发OpenCV应用程序所需的一切内容了。同样,要为Android开发应用程序,我们还需要安装Android Studio,在1.3节中有介绍。

1.2.4 在Fedora及其衍生系统(包括RHEL和CentOS)上安装Python和OpenCV

在Fedora、RHEL和CentOS上,预先安装的Python可执行文件是Python 2.7。我们可以使用系统包管理器yum安装标准库的Numpy、SciPy、Requests和wxPython。要完成这一安装过程,请打开终端并运行以下命令:

标准库并没有提供一个PyInstaller包。相反,我们使用Python自己的包管理器pip来获取PyInstaller。首先,要确保已安装了pip,请运行以下命令:

现在,运行下面的命令,安装PyInstaller。

标准库中包含了一个opencv包,而且这个包还包括了opencv_contrib模块和Python绑定,但却是一个较低版本(3.4.4或更低版本,取决于具体的操作系统)。因此,我们想使用pip获得OpenCV4和opencv_contrib模块。运行以下命令:

如果你更喜欢使用python 3可执行文件,不管是Python 3.6还是3.7(取决于具体的操作系统),需将上述pip命令用pip3命令替换。你不需要修改yum命令,因为像numpy之类的相关包已经包括了Python 2和Python 3的子包。

现在,我们已经具备了在Fedora及其衍生系统上开发OpenCV应用程序所需的一切内容。同样,要想为Android开发应用程序,我们需要安装Android Studio,在1.3节将对其进行介绍。

1.2.5 在openSUSE及其衍生系统上安装Python和OpenCV

在openSUSE上,预先安装的python可执行文件是Python2.7。我们可以使用系统包管理器yum安装标准库的NumPy、SciPy、Requests和wxPython。要完成这一安装,请打开终端并运行以下命令:

尽管openSUSE和Fedora都使用yum包管理器,但是它们所使用的标准库却是不同的,并且包的名称也是不一样的。

标准库没有提供PyInstaller包。作为替代,我们可以使用Python自带的包管理器pip来获取PyInstaller。首先,确保已安装好了pip,请运行以下命令:

现在,通过运行以下命令,安装PyInstaller:

标准库包含一个python2-opencv包(以及Python 3的一个python3-opencv包),但这是OpenCV的一个较低版本(3.4.3或更低版本,取决于具体的操作系统)。因此,我们想要使用pip来获取OpenCV 4以及opencv_contrib模块。运行以下命令:

如果你更喜欢使用Python 3可执行文件,无论是Python 3.4,还是3.6,或是3.7(这取决于具体的操作系统),请将上述pip命令替换为pip 3命令。你并不需要修改yum命令,因为像python-numpy之类的相关包已经包含了Python 2和Python 3的子包。

现在,我们已经具备了为openSUSE及其衍生系统开发OpenCV应用程序所需的一切内容。接下来,我们需要按照跨平台步骤来安装一个Android开发环境。