zoukankan      html  css  js  c++  java
  • 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再改环境变量的。。

  • 相关阅读:
    实用技巧——让你的网站变成响应式的3个简单步骤
    C#网络编程初步之TCP
    C#调用WebService实例和开发
    获取GridView中RowCommand的当前索引行
    创建Spring项目 IOException parsing XML document from class path resource [ApplicationContext.xml];
    java8的日期处理
    使用IDEA创建动态web项目
    连接数据库出现The server time zone value '�й���׼ʱ��' is unrecogni的解决方案
    Spring Boot RabbitMQ 应用场景--转载
    SpringBoot可视化监控
  • 原文地址:https://www.cnblogs.com/developerchen/p/7497030.html
Copyright © 2011-2022 走看看