Ubuntu16.04卸载opencv2.4.9并安装opencv3.2.0+contrib
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃
需要用到opencv中的surf和sift算法,机器上只有opencv3.2,没有扩展包,于是就去GitHub和官网看了下,没想到8月刚出了3.3,一个激动就想装个opencv3.3+contrib,不过opencv3.3+contrib这产生segment default(段错误,有可能是内存溢出)。完全不能用啊,可能是有些包没下到,网上很难搜到3.3的相关模块,如果对opencv3.3非常有兴趣可以参考一下http://www.linuxfromscratch.org/blfs/view/svn/general/opencv.html。
0:写在最前面
如果你只是想使用python验证一下算法,那么恭喜你,后面不用看了。可以直接用pip获取到带contrib的opencv模块,首先把你python中原有的opencv卸载掉,然后安装带有contrib的opencv模块,如果没有该包,请更换pip源,我使用的阿里源。你可以单独为此次安装指定源地址:
pip uninstall opencv-python
pip install opencv-contrib-python
pip install opencv-contrib-python -i https://mirrors.aliyun.com/pypi/simple
修正1:如果报错:ImportError: DLL load failed: 找不到指定的模块。
请在此https://www.lfd.uci.edu/~gohlke/pythonlibs/对应版本的opencv-python,我刚才在另一台电脑测试,发现了这个错误,电脑的环境是Python3.6,64位系统,所以我下载了opencv_python-3.3.1-cp36-cp36m-win_amd64.whl,下载完成后进入文件所在目录,执行:
pip install opencv_python-3.3.-cp36-cp36m-win_amd64.whl
Python 3.6. |Anaconda 4.3. (-bit)| (default, Dec , ::) [MSC v. bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.3.1'
>>> exit()
分析,这个问题导致的原因是什么捏,python其实有很多模块在安装的时候都会产生这个错误,比如安装mysql-Python的时候,这个错误的原因其实是因为pip安装的模块可能只是一个Python的扩展模块,而缺少对应模块的可执行程序(相关问题可以留言给我)。
修正2:安装后报错
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.5/dist-packages/cv2/__init__.py", line 4, in <module>
from .cv2 import *
ImportError: libSM.so.6: cannot open shared object file: No such file or directory
这是我在使用TensorFlow的docker中发现的错误,这个时候,不要使用某些博客推荐的安装python-qt4的办法,提供两个解决方案:
###方案1:降低opencv版本,目前默认都是安装opencv3.4,装3.2即可
# pip install opencv-python==3.2.0.8
>>> import cv2
>>> cv2.__version__
'3.2.0' ###方案2:缺什么装什么,国内更新apt比较慢,记得换掉源
# apt update && apt install -y libsm6 libxext6
###Python3.5下安装:apt update && apt install -y libsm6 libxext6 libxrender1 libxext-dev
>>> import cv2
>>> cv2.__version__
'3.4.0'
注意,opencv-python只能在python中使用,并且,通过pip默认安装的都是opencv3,如果需要安装opencv2,并且想安装完整的opencv sourcecode写算法,继续往下阅读(opencv2和3的区别主要在于部分函数的调用,opencv2覆盖的更全面一些,给出的api接口更多):
一、命令行查看已安装的opencv版本
这个命令会经常用到。也可以用上面的cv2.__version__
pkg-config --modversion opencv
二、卸载
首先要找到当初安装opencv sourcecode的build目录(如果不明白什么是build目录可以先跳过这一步,看第3步.),进入该build目录执行如下操作:
sudo make uninstall
cd ..
sudo rm -r build
rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*
删除/usr中所有opencv相关项
cd /usr/
find . -name "*opencv*" | xargs sudo rm -rf
移除Python相关
apt-get remove opencv-doc opencv-data python-opencv
******如果找不到当初安装的目录,执行1,执行3,再执行2。******因为机器共享给小伙伴一起用的,我就没找到2.4.9的安装目录,估计当时被删了,所以我先下了一个249,build一遍后才uninstall的。
三、安装
这里提供一个opencv3.2+contrib3.2的链接https://pan.baidu.com/s/1-A0I5jCnMwpRwcFpguGdqg。你也可以通过官网或者GitHub下载相应的版本,注意contrib模块一定要下对应版本的release。
把opencv3.2和contrib模块解压缩,应该是两个文件夹,建议放在同一个目录下。由于cmake过程中,某些模块下载速度很慢,容易导致build失败,需要下载的ippicv+protobuf模块我一并放在网盘内了,拿去不谢。
完成下载工作,进入opencv3.2:
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=TELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLE=OFF \
-D INSTALL_PYTHON_EXAMPLE=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.2./modules \
-D BUILD_EXAMPLES=ON ..
注意OPENCV_EXTRA_MODULES_PATH设置成自己的路径。
看看是否报错:
ICV: Downloading ippicv_linux_20151201.tgz...
CMake Error at 3rdparty/ippicv/downloader.cmake:73 (file):
如果提示缺少ippicv或者protobuf,则下载相应版本的放入错误提示的目录内。
例如,提示缺少ippicv,新建文件夹opencv3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e,把ippicv文件放入该目录,
再次执行cmake,确保没有报错。
执行make和make install命令
make
......
make install
打开opencv里面的sample,随便选一个cpp,在里面增加一些例如sift、surf等nonfree算法试试吧。
Ubuntu16.04卸载opencv2.4.9并安装opencv3.2.0+contrib的更多相关文章
- ubuntu16.04卸载tensorflow0.11版本,安装tensorflow1.1.0版本
卸载旧版本: pip uninstall tensorflow 安装新版本: sudo pip install --upgrade https://storage.googleapis.com/ten ...
- Ubuntu16.04下编译安装OpenCV3.4.0(C++ & python)
Ubuntu16.04下编译安装OpenCV3.4.0(C++ & python) 前提是已经安装了python2,python3 1)安装各种依赖库 sudo apt-get update ...
- Ubuntu16.04系统美化、常用软件安装等,长期更新
Ubuntu16.04系统美化.常用软件安装等,长期更新 IT之家啊 18-09-0915:00 因为我个人偏向于玩VPS.服务器之类的东西,所以一般我都是用CentOS.不过对于桌面版的Linux, ...
- 在CUDA8.0下编译安装OpenCV3.1.0来实现GPU加速(Compiling OpenCV3.1.0 with CUDA8.0 support)
在CUDA8.0下编译安装OpenCV3.1.0 一.本人电脑配置:ubuntu 14.04, NVIDIA GTX1060. 二.编译OpenCV3.1.0前,读者需要成功安装CUDA8.0(网上有 ...
- 在CUDA8.0下指定位置编译安装OpenCV3.1.0来实现GPU加速(Compiling OpenCV3.1.0 with CUDA8.0 support)
在CUDA8.0下指定位置编译安装OpenCV3.1.0 一.本人电脑配置:ubuntu 14.04, NVIDIA GTX1060. 二.编译OpenCV3.1.0前,读者需要成功安装CUDA8.0 ...
- ubuntu16.04 卸载 php7并安装php5.6记录
ubuntu16.04版本从默认源安装的php版本为7.x版本,我们都知道php7.0已经舍弃了很多旧版本的函数等内容,这对旧系统来说是致命的,那么,我们就有了安装旧版php的需求,而同一主机安装两个 ...
- ubuntu环境下,ubuntu16.04装机到nvdia显卡驱动安装、cuda8安装、cudnn安装
首先是安装ubuntu16.04 A.制作u盘启动盘(提前准备好.ios文件): 1.安装u盘制作工具unetbootinsudo apt-get install unetbootin2.格式化u盘s ...
- Ubuntu16.04 在Windows10 系统下的安装(双系统)
楼主最近升级了一个固态+8G双通道内存条,重装了一下win10和ubuntu系统,过程中遇到一些问题,push上来供自己和大家参考.比较好用的博客教程直接贴链接. 一.win10系统 学校有正版软件许 ...
- Ubuntu16.04 + OpenCV源码 + Qt5.10 安装、配置
在VMWare中配置安装Ubuntu16.04.没有什么特别的地方,正常安装即可. 安装最新版qt,此时5.10.按照普通QT教程安装(需要勾选gcc),无须sudo,此时不用管OpenCV.地址:h ...
随机推荐
- JS(二)
上周给大家介绍了一下JS基础中一点东西,今天给大家介绍一下JS基础中一个重要部分,循环和函数. 04-JS中的循环结构 一.[循环结构的步骤] 1.首先要先声明循环变量. 2.判断循环条件 3.执行循 ...
- display:flex css
本文介绍下flex的用法和属性 这个一个自适应的3列盒子 <div class="flex"> <div style="background-color ...
- CSV导出大量数据
$csvname = $csvname . '.csv'; header('Content-Type: application/vnd.ms-excel;charset=GB2312'); heade ...
- IE无法获得cookie,ie不支持cookie的解决办法,火狐支持
发现用自己的电脑 IE7.0总是无法正常登录,别的电脑都可以. 每次登录后又被重定向回了登录页面. 可换成Firefox和google chrome 却一切OK,后来还把浏览器升级到IE8.0 问题依 ...
- JAVA设计模式总结之六大设计原则
从今年的七月份开始学习设计模式到9月底,设计模式全部学完了,在学习期间,总共过了两篇:第一篇看完设计模式后,感觉只是脑子里面有印象但无法言语.于是决定在看一篇,到9月份第二篇设计模式总于看完了,这一篇 ...
- Java连接数据库完整代码 查找和插入
package test; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; ...
- Sql Server——查询(二)
上次写了查询里的一些简单的查询方法,如果说上次的是初级查询,那这次的就是高级查询了. 今天主要是聚合函数.分组查询.连接查询.联合查询.在我看来前三个挺简单的,稍微难理解点的也就最后一个,为什么呢?因 ...
- E. Fish (概率DP)
E. Fish time limit per test 3 seconds memory limit per test 128 megabytes input standard input outpu ...
- 一.把传统服务做成dubbo分布式服务架构的步骤
1.把传统服务按照一定原则(根据项目的业务逻辑和场景)拆分成多个服务(主要服务是服务提供者和服务消费者,服务提供者或服务消费者的公共部分也可以拆分成其他服务,如公共DAO.公共工具类.公共实体,公共w ...
- Ubuntu 16安装GPU版本tensorflow
pre { direction: ltr; color: rgb(0, 0, 0) } pre.western { font-family: "Liberation Mono", ...