Anaconda安装opencv3
最常见的使用Anaconda安装opencv3的命令:
conda install -c menpo opencv3 |
如果使用上述命令,可能会出现包冲突问题,我使用conda5.3.0=py37,出现了以下包冲突问题:
UnsatisfiableError: The following specifications were found to be in conflict: |
解决这个问题参考了这个网址,使用下面的命令:
conda install -c conda-forge opencv |
使用conda上述命令直接安装Opencv,可以正常使用,但是imshow依赖第三分GUI,无法正常显示图像,imshow出现下面的问题:
cv2.error: OpenCV(3.4.2) /tmp/build/80754af9/opencv-suite_1535558553474/work/modules/highgui/src/window.cpp:632: error: (-2:Unspecified error) The function is not implemented. |
解决办法就是自己编译Opencv,打开开关GTK+2.x,这里给出我的cmake配置(下面一个bug index也讨论到了无法显示GUI的问题,下面的bug index给出的cmake没有配置python-opencv,这个给出编译python的cmake配置):
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_GTK2=ON -D WITH_OPENGL=ON -D PYTHON3_EXECUTABLE=~/anaconda3/bin/python3.7 -D PYTHON_INCLUDE_DIR=~/anaconda3/include/python3.7m -D PYTHON_LIBRARY=~/anaconda3/lib/python3.7/site-packages/numpy/core/include/ .. |
cmake主要是打开GUI配置项WITH_GTK2=ON
,配置python路径。
make -j7 |
成功编译安装Opencv后,在python中还不能import cv2
,还需要设置一下,取Opencv的安装路径下找到下面的文件(我的安装路径/usr/local
):
/usr/local/lib/python3.7/site-packages/cv2.cpython-37m-x86_64-linux-gnu.so |
复制到anaconda的site-packages,这个site-packages就是我们cmake配置里的那个。如果你不知道这个这个路径,可以在python代码中打印出来:
>>> import sys |
接下来拷贝cv2文件:
cp /usr/local/lib/python3.7/site-packages/cv2.cpython-37m-x86_64-linux-gnu.so /home/maxliu/anaconda3/lib/python3.7/site-packages |
python中成功import cv2
。参考
eclipse c++中不能添加带版本号的库
这里以libtorch为例来说明这个情况。
我们下载libtorch后,解压得到libtorch库如下:
libbenchmark.a libcaffe2_protos.a libcudart-5d6d23a3.so.8.0.61 libnnpack.a libnvToolsExt-422e3301.so.1 libonnx_proto.a libshm.so |
上面的库中,我们主要使用libtorch.so, 我们ldd看下libtorch.so的依赖项:
ldd libtorch.so |
得到下面的依赖项:
maxliu@maxliu-tp:/data/source/libtorch/lib$ ldd libtorch.so |
我们可以看到libtorch.so依赖libnvToolsExt-422e3301.so.1,这个so文件带版本号,而我们在eclipse中添加库时,只能添加so文件的名字,也就是nvToolsExt-422e3301, eclipse调用g++使用参数-l进行链接,即-lnvToolsExt-422e3301,在实际链接库会自动补上前缀lib和后缀so,所以无法找到带版本号的库,碰到这个问题,我目前还没有找到解决方法,不行的话我们还是写CMakeList来解决吧。
cmake编译安装Opencv3.4后,无法显示GUI
g++编译运行出现imshow
无法显示的问题:
terminate called after throwing an instance of 'cv::Exception' |
按照error
安装GTK和QT(linux下的gui支持),我下载Opncv3.4的版本安装QT4.x(注意这里不能安装QT5.x, 因为opencv3.4不支持配置QT5.x):
sudo apt-get update |
安装GTK+2.x:
sudo apt-get install libgtk2.0-dev |
配置Opencv, Cmkae命令如下:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_GTK2=ON -D WITH_OPENGL=ON .. |
我试验了下,好像不能同时开启QT和GTK, 我这里开启了GTK+2.x(我也安装了GTK+3.x,我没有试验能不能顺利编译通过,有兴趣的可以试验下,使用WITH_GTK=ON
默认会使用GTK+3.x)查看配置结果,GTK+2.x配置成功:
-- GUI: |
我使用GTK+2.x成功了,如果你使用GTK+2.x失败,可以参考Stackoverflow, 配置使用GTK+3.x代替,安装GTK+3.x:
sudo apt-get install libgtk-3-dev |
重新执行上面的cmake配置命令,make && make install
.
编译Opencv bug
真的是莫名其妙的bug,整了一天,最后重装了protobuf就好了,真的很莫名其妙!!!
安装PIL
使用conda安装:
conda install pil |
出现下面的bug:
UnsatisfiableError: The following specifications were found to be in |
可能是由于pil
包不支持跑一趟python3,安装pillow
,同时支持python2和python3:
conda install pillow |
Ubuntu系统问题
ubuntu 系统软件升级后出现下面问题:
manpath: can't set the locale; make sure $LC_* and $LANG are correct |
由于系统语言环境设置出现问题,导致系统不能正常的工作,解决方法:
sudo locale-gen "en_US.UTF-8" |
重启后问题解决.
Comments