让我们在debian9的stretch版本上构建OpenCV3

开场白

為了進行深度學習,我想要在做某事的情況下安裝OpenCV3。
如果只是在Python中使用OpenCV,使用Anaconda將更加簡單,但我想試著進行編譯。
嗯,結果只找到了Ubuntu的相關資訊,但在Debian 9上並無法正常運作。
順便說一下,我原本以為只要是OpenCV3就可以,所以試圖使用3.0進行編譯,但遇到了問題。

在Ubuntu上的安装

参考:https://www.learnopencv.com/install-opencv3-on-ubuntu/

由于我通常使用pyenv的python,所以我将跳过第三步(请参考上述链接)中与python相关的部分。
请暂时不要执行cmake命令。

对Debian 9的问题(可以跳过以及大概无妨)

基本上就是按照上述的Ubuntu16安装过程进行操作。
然后可能会在make命令中出现错误。
关于gnu的版本,无论如何都要说明一下。
总的来说,gcc和g++的版本如果是5以上,就太新了,无法运行CUDA。
虽然不知道CUDA会做些什么,但在这里分两种情况。

1)不使用CUDA
也许这个方法也能行(虽然我没试过)
https://qiita.com/tymob/items/42b438da2242e88e509f
这里可能会有所帮助

2) 在Debian 9上安装旧版的gcc和g++。Debian 9只提供6.x版本的gcc和g++。据说Debian 9的目标是仅支持6及以上版本。

如果没有的话,为什么不安装呢?
首先我想安装gcc-4.9和g++-4.9
但是问题来了
尽管我想用apt install gcc-4.9 g++-4.9来安装,但是找不到这个软件包
虽然可以进行编译,但是太麻烦了,有没有办法通过apt来安装呢?

安装gcc-4.9和g++-4.9

请参考以下方法在Debian Stretch上安装G++ 4.9:

1. 打开终端并使用root权限或者sudo命令编辑/etc/apt/sources.list文件。
2. 查找并定位到包含“deb”字样的源行。
3. 在源行末尾添加以下内容:deb http://ftp.us.debian.org/debian jessie main。
4. 保存并关闭文件。
5. 更新软件包列表,运行命令:sudo apt-get update。
6. 安装G++ 4.9,运行命令:sudo apt-get install g++-4.9。

请确保你对系统文件的更改非常小心,以免导致错误。

deb http://ftp.us.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free

隨便添加

sudo apt update
sudo apt install gcc-4.9 g++-4.9

当安装完成后,建议您再次从/etc/apt/sources.list中删除先前添加的两行。

尽管已经安装了gcc-4.9和g++-4.9,但如果继续执行构建操作,使用的gcc和g++版本将仍然保持在6系列,因此需要更改构建所使用的编译器版本。

CMake (仅需要一个选项)

请参考以下链接:https://codeyarns.com/2013/12/24/how-to-set-c-or-c-compiler-for-cmake/
进行opencv-3.3.0目录下的CMakeLists.txt的编辑。

SET(CMAKE_C_COMPILER /path/to/c/compiler)
SET(CMAKE_CXX_COMPILER /path/to/cpp/compiler)

只要在任意位置添加(我在最下方追加了)
如果您以前使用相同的方法装过gcc-4.9和g++-4.9
那么

SET(CMAKE_C_COMPILER /usr/bin/gcc-4.9)
SET(CMAKE_CXX_COMPILER /usr/bin/g++-4.9)

应该会成为

只要到这一步,剩下的只需要按照这个页面的指示继续执行cmake就应该可以了。

问题

虽然opencv3的安装成功了,但是无法找到用于在Python中使用opencv的cv2*.so文件。最终决定使用Anaconda来安装和使用。

广告
将在 10 秒后关闭
bannerAds