组里的服务器又坏了,原来是导师和师兄重装,这次我参与了重装。目前进行的是重装opencv
参考文章,值得仔细阅读,我补充一些我在重装过程中遇到的问题和解决。
opencv多版本之间是可以共存的,见文章 opencv有个国内镜像源,网址收藏方便下次使用(重装必备)
opncv的依赖库,需要安装的东西比较多,如果有错误,多查阅文档,已安装的库会在opencv的libraries里看到
sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-devcmake命令需要按照文章里的来操作 make -j 命令,如果服务器有足够多的核心,可以数字写大些 但是不能写太大,前几次在服务器里make -j128就太大了,导致“虚拟内存耗尽报错”,内存报错的方式有还几种,比如
c++: internal compiler error: Killed (program cc1plus) Please submit a full bug report virtual memory exhausted: Cannot allocate memor解决的方法也很简单,我尝试了make -j64成功了,核心数少的朋友可以输入make -j8 -j16等等 分析发生虚拟内存报错的原因,我猜测是虚拟空间是有限的,本身没有那么多核心, 却分给那么多,适得其反,每个核心分到的虚拟内存就很有限,线程多轮循环而内存池却得不到内存释放导致最终内存不足。我在make -j128 编译到67% 92%的时候都报过内存不足的问题,深层原因应该和内存分配机制有关系,懂行的朋友欢迎补充
我和文章不一样的地方出现了,我没有在/usr/local/lib目录下看到这么多动态静态库,可能是老师交给我的时候没有安装那么多的依赖,这里保留一个疑问
在配置环境的第二步,我在 sudo ldconfig的时候报了错 问题大意是软硬链接有问题,需要改 这部分是翔哥完成的,他查阅资料,找到了网上曾经有过这样的情况 把链接给成功的改好了,sudo ldconfig再次更新也就没有问题了 这个命令执行后没有问题,4.4.0版本可以清楚显示,注意这里查询的是opencv4版本,不是opencv
pkg-config --modversion opencv4安装完成了,下一步遇到的问题是: ubuntu16.04是自带python2.7和python3.5的 (ps:一定不能手贱把系统自带的python版本给删了,多版本python是可以共存的,只需要修改链接指向的问题以及调整优先级即可使用你想用的python版本;或者用anaconda创建虚拟环境进行管理)。
初始ubuntu16的系统内,python是链接向python2.7的,在其内部import cv2没有任何问题,应该是opencv默认兼容python2.7。
而python3.5内部,import cv2会报错, 显示“No module named ‘cv2’” 具体解决,请见我的下一篇技术博客
python3 import cv2失败报错:No module named “cv2“ 解决办法