==============================================================================================
==============================================================================================
https://opencv.org/releases/page/3/原版压缩包,分zip和windows的exe。
https://github.com/opencv/opencv/releases/tag/3.4.3 也是一个下载途径
https://github.com/opencv/opencv_contrib/releases/tag/3.4.3 contrib,也分版本的,要对应吧
(contrib的一个总目录https://github.com/opencv/opencv_contrib/releases)
1. sudo apt-get install build-essential
2. sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
3. sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
cmake(下过了,连接不找了,何况他这是linux的cmake)
build建在源文件路径下
有专门的参数指定额外的库
CMAKE_INSTALL_PREFIX安装路径
OPENCV_EXTRA_MODULES_PATH模块路径
在终端执行以下两步:
第一步:
cd opencv-3.2.0/build
第二步:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv320 -D OPENCV_EXTRA_MODULES_PATH=/home/jason/opencv_contrib-3.2.0/modules/ ..
如果不安装opencv_contrib模块,则第二步的命令为:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv320
cmake过程中可能遇到的问题:
如果网络不好,出现ippicv_linux_20151201.tgz无法在终端下载的情况,则可以先单独下载ippicv_linux_20151201.tgz之后,把其移动到终端所提示的路径(终端会提示该路径找不到文件),如路径/opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/
移动的时候,可以另外打开一个终端操作:
sudo mv ippicv_linux_20151201.tgz /opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e
如果同样有其他类似的文件无法下载,方法同上。
在终端执行以下两步:
第1步:
sudo make
第2步:
sudo make install
linux下这样算安装完成
1.用cmake-gui,选中opencv的根目录,选中build目录。
2.点configure,3.4.3+vs2015+default(失败,别人有个3.0.0-vs2013的,opencv本身是vs不相关的吧??或者说默认的编译选项太多了?但是我不知道怎么选啊)
核心问题是编不过去,是找到别人的参考,还是自己根据错误把配置选项全删了?
关掉WITH_CUDA,居然成功了,看来就是CUDA问题。generate也成功了
这个表里不止有选项打钩,还有变量,在其中找到Name为OPENCVEXTRAMODULESPATH的参数,然后把它的Value设置为opencvcontrib的路径
要精细到modules路径
3.generate生成,生成
最后,会得到一个OpenCV.sln?
用VS
打开D:/VS2015/opencv-3.4.0/build/目录下的OpenCV.sln
编译debug版本库:在“解决方案'OpenCV'(3.0.0有141个项目?3.4.3我只有30个项目?)”上面点击右键-->重新生成解决方案
实测报错
http://tieba.baidu.com/p/5682396502
我的3.4.2怎么报4.0的错误?
错了,第二次是139个项目,之前可能是路径设定再source下的build,可能和其他配置有冲突,互相改写了?现改名mybuild,好像也不是,选项里那些build,都是根据输出路径自动生成的,修改之后一样的错误
重回cmake,再勾上nonfree,再来一遍,确实是141个项目
项目设置是否对?debug,win32?这个主要是输出install目录吧,最终还是被引用,所以这里不用纠结。
改成x64(我机器没有x86选项)?????
3.找到CMakeTargets中的INSTALL,然后右键选择“仅限于项目”-->“仅生成INSTALL”,然后就在D:\opencv3\opencv\mybuild\install中发现了许多东东。
什么时候设置?生成之后?
然后是自己项目的引用(这里的vc12限于VS2013,VS2015应该是vc14)
VC++目录-->包含目录,添加:
D:\opencv3\opencv\mybuild\install\include
VC++目录-->库目录,添加:
D:\opencv3\opencv\mybuild\install\x86\vc12\lib
D:\opencv3\opencv\mybuild\install\x86\vc12\staticlib
链接器-->输入-->附加依赖项,添加opencv_xxxxxd.lib(这个见仁见智,不同版本名称不同,总之就是openc库目录的所有)
路径方面,或者,比如:
D:\VS2015\opencv-3.4.0\mybuild\install\include
D:\VS2015\opencv-3.4.0\mybuild\install\x86\vc14\lib
vc14没有那个staticlib
surf什么的属于收费模块,应该勾选如下选项?这是否与前边的错误有关?(按理说这是编译之后使用才可能出现的错误,目前卡在了编译)但是勾选之后这一步都过不去了,不勾选,好歹是能出sln,顶多是sln编译不过,
==========================================================================================================================================================================================================================================================================================
同样是在windows用cmake,首先,CUDA肯定是报错了要关掉(所有流程参考下边opencv3的操作,除了opencv2不需要额外附加nonfree,过程一样)。
另外,我opencv2遇到了这个错
CMake Warning at cmake/OpenCVPackaging.cmake:23 (message): CPACK_PACKAGE_VER
这是把cmake中的打印信息复制出来找到的,你的版本号,或者你下载记得。
找到makelist
这个Makelists.txt文件海量多,需要改的是opencv\sources\目录的那个
在文件下搜索
if(GIT_EXECUTABLE)
找到这一段,图中注释部分是改掉的,原来是unknown,所以不匹配。
不同的是,有人是2.4.13整,我是2.4.13.6,而你也可能是7是8,而且,我也有git(但是可能出现了某种问题吧,比如我的目录下可能没git信息,是自己解压缩的包),所以只改第二个"unknown"(他是没git,触发了else)不行,要把第一个改了,两个unknown,都改成自己的版本,
===========================================================================
再说下流程,cmake配置和生成sln,sln内部去编译生成库,新建vs工程引用生成的库,运行。
最后运行报错应用程序无法正常启动0xc000007b
x86需要改成x64,尽管在opencv的工程的编译选项是win32,貌似认为是编译的64(也许是我下的版本)。
改完之后运行成功
==============================================================================================
最后,既然还是引用?既然还是VS设定include和lib路径,添加依赖dll,那么现在编译一次,和直接解压一份opencv直接引用,区别是什么呢?我猜,就是能定制了,尤其是Opencv3,有些非免费的库不存在,需要自己编译进来,如果没有这个需求,比如opencv2,貌似就没有编译的必要了。。。