EC 601 OpenCV Install

Posted 切力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EC 601 OpenCV Install相关的知识,希望对你有一定的参考价值。

首先要做好遇鬼杀鬼遇佛杀佛的准备。。。。。此篇非教程,而是自己的错误记录。如果想要正确安装,请撤离此处。。。

我的配置是Mac + OpenCV3.3.0_3 + python2.7(我的电脑上已经装有python2.7和python3.6,用的anaconda设置的虚拟环境。)

网上都说要用brew来install opencv,那么我先下载了brew,下载链接 https://brew.sh

在终端输入:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

就下载好了brew,然后用brew下载opencv

install opencv之前需要先add,所以终端输入:

brew tap homebrew/science

然后才是install,终端输入:

brew install opencv

可以看到opencv所在位置:

/usr/local/Cellar/opencv/3.3.0_3

重点来了,貌似网上的教程都是opencv2+,而我现在下载的opencv是3.3.0_3, 于是/usr/local/Cellar/opencv/3.3.0_3/lib/python2.7/site-packages 里面没有cv.py文件。我自己也不太确定,先姑且这样认为。

接下来就是要让python知道opencv的存在,我做的事情是复制/usr/local/Cellar/opencv/3.3.0_3/lib/python2.7/site-packages/cv2.so 到/anaconda/envs/braintumor/lib/python2.7/site-packages 里面。

运行import cv2,报错ImportError: numpy.core.multiarray failed to import。还好之前看了一片教程正好提到这个错误,解决方法是重新install numpy:

sudo pip install numpy --upgrade --ignore-installed

 

在让python知道opencv这一步中,尝试了其他方式,比如

cat ~/.bash_profile | grep PYTHONPATH
ln -s /usr/local/Cellar/opencv/2.4.10/lib/python2.7/site-packages/cv.py cv.py
ln -s /usr/local/Cellar/opencv/2.4.10/lib/python2.7/site-packages/cv2.so cv2.so

我没有注意看这个代码中的opencv版本,就直接这样输入了终端,不知道为什么却没有报错,而是在/Users/chenrui里面出现了cv.py和cv2.so。当然这样并没有把opencv连接到python,因为1.版本不同 2.我没有进入/anaconda/envs/braintumor/lib/python2.7/site-packages进行连接。

然后我就改了版本,但是没有改位置继续在终端输入:

cat ~/.bash_profile | grep PYTHONPATH
ln -s /usr/local/Cellar/opencv/3.3.0_3/lib/python2.7/site-packages/cv.py cv.py
ln -s /usr/local/Cellar/opencv/3.3.0_3/lib/python2.7/site-packages/cv2.so cv2.so

终端提示:

ln: cv.py: File exists
ln: cv2.so: File exists

但是这样也没有什么用处。。import cv2还是报错:no module named cv2,因为到目前为止还是没有连接到一起啊。然后我正巧在终端发现了这个,这个是在install完opencv出现的。

里面让我终端输入两行代码:

mkdir -p /Users/chenrui/.local/lib/python3.6/site-packages
  echo \'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")\' >> /Users/chenrui/.local/lib/python3.6/site-packages/homebrew.pth

我照做了。。感觉这里两行的意思是创建 /Users/chenrui/.local/lib/python3.6/site-packages,然后把/usr/local/lib/python2.7/site-packages加到了homebrew.pth里面。。但是为什么这样一来,homebrew\'s site-packages 就在python sys.path里面了,我不是很明白,需要问一下TA。。。

之后还是不行,于是网上看了一堆教程,方法挨个尝试了一下,其中有个教程在ln之前有先cd到/Library/Python/2.7/site-packages里面,于是我也又在终端(在python2.7环境下即braintumor,这个很重要,所以应该先切换环境)输入:

cd /Library/Python/2.7/site-packages
ln -s /usr/local/Cellar/opencv/3.3.0_3/lib/python2.7/site-packages/cv.py cv.py 
sudo ln -s /usr/local/Cellar/opencv/3.3.0_3/lib/python2.7/site-packages/cv2.so cv2.so

然后import cv2出现numpy问题再更新numpy一下就成功了。。。没有报错,但是当我用spyder再运行就又报错no module named cv2..崩溃边缘。。

然后我重开了spyder再运行了一下,居然成功了并且没有报错,之后我发现是因为我的py文件碰巧和cv2.so都在桌面上,当我把cv2.so移到其他地方时,no module named cv2.so 就出现,于是我隐约觉得,我还是没有把python和opencv连接成功。。于是又看了一堆教程,其中有一个让import sys + print sys.path, 然后随便在path中选一个把cv2.so放进去,于是我就选了/anaconda/envs/braintumor/lib/python2.7/site-packages把cv2.so放进去了。import cv2.so,没有报错。。准备接下来试一试opencv python里面的一些example!

我觉得整个过程没注意到的点是,python2.7和python3.6的环境切换,每次在终端输入一下命令都没有先切换到python2.7环境下,导致有些步骤可能再python3.6中生效了,但python2.7却没有变化,于是后面就有点乱乱的了。

 

Ps: 看见有的博客上说要配置一下环境变量,

cd ~

touch .bash_profile

open -e .bash_profile

在.bash_profile 中输入 export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages 。再保存环境变量。

source .bash_profile

我照着这个做了一下反而出错了。。所以就还原了,不知道没有做这一步会不会带来什么后果。

现在分析下来应该是没有切换至python2.7...应该切换到braintumor再改环境变量的。。

 

以上是关于EC 601 OpenCV Install的主要内容,如果未能解决你的问题,请参考以下文章

环境初始化 Build and Install the Apache Thrift IDL Compiler Install the Platform Development Tools(代码片段

ec2 挂在 npm install 上

`bundle install` 在 EC2 实例上失败

AWS EC2 install supervisor

imgwarp.cpp:3143: error: (-215:Assertion failed) _src.total() > 0 in function ‘warpPerspective‘(代码片段

Install OpenCV-Python in Ubuntu