带有Python 3.5的OpenCV 3.1.0

罗德里戈·马丁斯·德·奥利维拉(Rodrigo Martins de Oliveira)

在遵循了其他SO答案中推荐的几个不同的教程,指南和步骤之后,我没有设法在Ubuntu 16.04系统中安装用于Python 3.5的OpenCV。

只要OpenCV 3.1.0正式支持Python 3.x,如何正确安装它?

罗德里戈·马丁斯·德·奥利维拉(Rodrigo Martins de Oliveira)

在通过不同的教程和指南收集步骤并对解决方案进行故障排除之后,我设法在系统中正确安装了Python 3.5和OpenCV库。

安装是在virtualenv环境下执行的,因此无需从系统中清除以前的安装尝试足迹。

按照此处介绍的步骤进行安装:

  • openCV 3.1.0
  • opencv_contrib 3.1.0
  • 麻木
  • 科学的
  • scikit
  • matplotlib
  • 吵架
  • 静脉

最后,如果您之前尚未安装任何软件包则可能需要占用20Gb的空间

您将需要gcc-4.9 +来编译OpenCV,我已使用gcc-5.4对其进行了测试

安装OpenCV依赖项

sudo apt-get build-dep -y opencv

创建并设置一个virtualenv

sudo apt-get install python3-venv
python3.5 -m venv python35-opencv31
source ~/python35-opencv31/bin/activate
pip install matplotlib
pip install numpy
pip install scipy
pip install scikit-learn
pip install cython
pip install -U scikit-image

编译OpenCV 3.1.0和openvc_contrib 3.1.0

依存关系

sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

获取存储库

mkdir ~/git
cd ~/git
git clone https://github.com/opencv/opencv.git
cd ./opencv
git checkout 3.1.0

cd ~/git
git clone https://github.com/Itseez/opencv_contrib.git
cd ./opencv_contrib
git checkout 3.1.0

确保将找到一些库

ffmpeg库

sudo -i
mkdir /usr/include/ffmpeg
cd /usr/include/ffmpeg
ln -sf /usr/include/x86_64-linux-gnu/libavcodec/*.h ./
ln -sf /usr/include/x86_64-linux-gnu/libavformat/*.h ./
ln -sf /usr/include/x86_64-linux-gnu/libswscale/*.h ./

如果在尝试查找某些ffmpeg库时在编译过程中发生任何问题,请卸载ffmpeg并从source进行构建

带有opencv_contrib模块的python绑定

echo "\nfind_package(HDF5)\ninclude_directories(\${HDF5_INCLUDE_DIRS})" >> ~/git/opencv/modules/python/common.cmake

编译中

source ~/python35-opencv31/bin/activate
mkdir ~/opencv3.1.0
cd ~/git/opencv/
mkdir release
cd ./release
export CC=$(which gcc)
export CXX=$(which g++)
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=~/opencv3.1.0 \
    -D INSTALL_C_EXAMPLES=OFF \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D OPENCV_EXTRA_MODULES_PATH=~/git/opencv_contrib/modules \
    -D BUILD_EXAMPLES=ON \
    -D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" ..

输出应包括以下内容:

--   Python 2:
--     Interpreter:                 /home/rodrigo/anaconda/bin/python2.7 (ver 2.7.12)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.12)
--     numpy:                       /home/rodrigo/anaconda/lib/python2.7/site-packages/numpy/core/include (ver 1.10.4)
--     packages path:               lib/python2.7/site-packages
-- 
--   Python 3:
--     Interpreter:                 /home/rodrigo/python35-opencv/bin/python3 (ver 3.5.2)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.5m.so (ver 3.5.2)
--     numpy:                       /home/rodrigo/python35-opencv/lib/python3.5/site-packages/numpy/core/include (ver 1.11.2)
--     packages path:               lib/python3.5/site-packages
-- 
--   Python (for build):            /home/rodrigo/anaconda/bin/python2.7

现在:

make

如果成功,则:

make install

将OpenCV库添加到您的virtualenv

cd ~/python35-opencv31/lib/site-packages
ln -s ~/opencv3.1.0/lib/python3.5/site-packages/cv2.cpython-35m-x86_64-linux-gnu.so

完毕!

要测试它是否按预期工作:

cd ~
source ~/python35-opencv31/bin/activate
python
import cv2
cv2.__version__

它应该导入cv2并显示版本号3.1.0。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

创建序列0、0、0、0、0、1、1、1、1、1、2、2、2、2、2、3、3、3、3、3、4、4、4、4、4 ,带有seq()的4

python 将列表 [0, 1, 2, 3, 4, 5] 转换为 [0, 1, 2], [1,2,3], [2,3,4]

Python:ValueError:形状(3,)和(118,1)不对齐:3(dim 0)!= 118(dim 0)

带有OpenCV 3的OpenNI2

如何理解 [].copyWithin.call({ length: 5, 3: 1 }, 0, 3)

〜1和〜0在python 3中给出奇怪的结果

[0,1,2,3,4]和[[0],[1],[2],[3],[4]]和有什么区别?

在Python中,如何对嵌套列表求和:[[1,0],[1,1],[1,0]]→[3,1]

下划线或lazy.js映射(0,1,2,3,4)+(1,2,3,4,5)->(1,3,5,7,9)

.NET代码在Oracle DB中存储的带有1或3个小数位的数字的末尾添加0

在 python3 中,我无法得到 -1 来打印 0xFF。有办法吗?

为什么map <bool,int> m = {{1,2,3,4,5,0}} 1号而不是3号?

带有RavenDb 3的NServiceBus 5

给定一个张量 [5,4,3,4],如何生成一个常数张量,其中每行有 n 个 1 和 m 个零,n=5,4,3,4,m=0,1,2,1。

清除算法以生成类型为(0)到(0,1,2,3,4,5,6,7,8,9)的所有集合

這是一個關於碼商的 mq 問題。我試過 [3 0 5 2 7] ,[2 1 4 3 6], [1 2 3 4 5]

EF Core 3 1对0关系问题

JOIN (VALUES (0),(1),(2),(3),...... ON 逻辑)

为什么带有sublime text 3和python 3.8的OpenCV意外退出?

使用递归函数从具有交替负数 (0, 1, -1, 2, -3, 5 ...) 的斐波那契模式中输出第 N 个数字

DHCPD ip6,enp2s0没有子网6声明(2001:470:1f1a:5b3 :: 2)

产生一个无限流<Integer>的含有整数(0,1,-1,-2,3,-3,...)

Python 3:比较两个数字并返回 -1、0 或 1

将数组的元素添加为a [0],a [1] + a [2],a [3] + a [4] + a [5],a [6] + a [7] + a [8] + a [9] ...等等

C中{0,1,2,3,4,5,6,7,8,9}外的条件

该代码的含义([1、2、3] || 0)[0]

带有Python 3的Django SimpleUploadedFile

带有json字典的python 3

带有退出选项的 Python 3 菜单

3>&1隐含4>&3 5>&3等吗?