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