**
**
之前做毕业设计,一直用的版本是Opencv 3.4.1,但做到了图像识别这一部分,由于模板匹配不太好用,就打算用Opencv调用tensorflow预训练模型,跟着网上教程走,但老是报错,而且问题解决不了,抱着试试看的想法,拿到同学Opencv4 .0.0下,pb文件运行良好;无奈,转投最新版。
百度搜索Opencv,到官网下载最新版4.0.1(附链接官网下载);
点击Sources下载就可以,有86.9MB;
方法一:下载源码包解压到用户目录下后,新建一个build目录;
方法二:当然也可以调用终端,使用命令:
mkdir build
cd build
如果要安装第三方库contrib, 则下载同版本的 https://github.com/opencv/opencv_contrib/releases
解压到opencv目录备用;
注意:后面的命令都在该build目录下进行 (在终端输入)
安装前如果没装g++的,还需要执行:
sudo apt-get install build-essential
为了清楚安装过程,用cmake-gui图形界面代替cmake
安装: sudo apt-get install cmake-qt-gui
执行: cmake-gui
记得配置安装路径
下图是我第一次安装时遇到的问题(路径错误),会的直接跳过
点击“configure"按钮,会自动生成一系列条目,如果有问题,部分显示红色
勾选一些条目, 如gtk2,sse4,ipp, tbb, eigen等优化库, 为了速度,设置release版本
opencv4.0.1 默认就是c++11,不用勾选
注意:不要随便勾选一些你不知道的东西,不然很有可能后面generate生成的时候会到17%-18%卡住,然后生成不了(血的教训,浪费了很多时间)
如果要安装contrib,则在OPENCV_EXTRA_MODULES_PATH条目上键入刚才备用的contrib下的module目录
确认没有问题后, 再次点击"configure"按钮, 确保没有红色出现!
再次检查生成的配置文件有无问题, 没有就点击"generate"按钮
大概会花20-30分钟才能生成完,请耐心等待~
在刚才的build空空的目录下发现已经"generate"生成一堆文件了,执行 :
make -j4
其中-j4表示4核cpu最佳(我的电脑是4核的), 如果你 cpu是8核的就 j8等等。
几十分钟后,就编译好了
因g++高度多核优化,-j4 比 -j 编译速度快3倍多!核越多,速度越快~
在刚才的build目录里,生成的文件更多了,安装即将完成,执行:
sudo make install
一阵等待后,终于安装好了。
C++的例子
c++的例子在~/opencv-4.0.1/samples/cpp下,
进入其中目录 example_cmake下例子,
mkdir build
cd build
cmake ..
make
这时应该生成了可运行文件 example_cmake
g++ -std=c++11 xxx.cpp -o xxx `pkg-config --cflags --libs opencv`
opencv 4.0.1会出现pkg-config错误:cant find opencv.pc
解决方法:
需要在 /usr/local/lib/pkgconfig目录(没有就自己新建一个)下放一个opencv.pc的文件;
注意:要以管理员的身份打开文件夹,不然没法对文件进行添加,更改,删除之类的;上图左边文件夹有小锁就不能更改,以管理员身份打开就像右图就可以;新建一个文本文档,把文档的名字和后缀改成opencv.pc就可以;
(我的4.0.1版本的opencv.pc内容如下):
# Package Information for pkg-config
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir_old=${prefix}/include/opencv4
includedir_new=${prefix}/include
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.0.1
Libs: -L${exec_prefix}/ib -lopencv_dnn -lopencv_ml -lopencv_objdetect -lopencv_stitching -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_imgproc -lopencv_flann -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir_old} -I${includedir_new}
修改保存opencv.pc后 执行:
pkg-config --cflags --libs opencv
确保能正确运行
可能出现的问题:
解决方法:检查opencv.pc文件,里面多了许多空格键,删除即可;(这个问题找了好久才发现如何解决)
解决办法:
找到系统盘里/usr/local/include文件夹,把opencv4文件夹里面的东西拷贝出来放在include文件夹里就行;
Tips: 如果嫌弃g++编译指令太繁琐,可以用alias简化它,具体怎么操作请自行百度,网上都说的很详细,我就不赘述了~
可以看到我做的opencv代替了 g++ 'pkg-config opencv --libs --cflags'语句,精练了不少
参考文章:http://blog.sina.com.cn/s/blog_57de6bc30102x9v7.html (老师博客)
如果你觉得文章对你有一丢丢用的话,1块钱支持一下啦~
1块钱,买不了上当,更买不了吃亏~