最近学习Opencv,然后需要扩展模块,就需要重新编译Opencv344,个人的习惯,不喜欢最新的版本,就用了Opencv344这个版本吧。
重新编译Opencv344分为几个步骤。
1、首先下载对应的软件
2、将下好的软件重新编译
3、配置环境
OK,开始下载软件了
First 首先下载 Opencv344 官方地址:https://opencv.org/opencv-4-0-0.html
顺便将源码一起下载下来,Sources
去github上下载opencv344的扩展模块 地址:https://github.com/opencv/opencv_contrib/releases
下载 CMake-gui https://cmake.org/download/ 下载 .msi 的版本
参考 cmake-gui 自带的编译方法
ok, 该下的东西都下完了。路径不要有中文路径,不要乱丢
Second, 重新编译
1、CMake-gui 安装 打开CMake, 选择source code: 和 build the binaries 的目录(一般在源opencv下新建一个rebuild) 然后点击 Configuration ,会出现版本选择框,强调一下,踩坑一天的经验啊(当前你的电脑的VS是什么版本,你就只可以选择什么版本,不能说在本机VS2015环境下CMAKE VS2013的环境,会报MSBuild.exe的错)。 选择自己电脑对应的VS的版本然后, 一共点击两次(第一次编译之后全是红的,再来一次) ,等待之后找到 opencv下的 extra modules (search extra 就有了) 然后将opencv_contrib 下的 modules 路径包含进去(不要复制路径,点击后的找到路径,想知道为什么就去直接去百度 / \ 的区别),但是会出现另外一个问题可能低版本的opencv没有,这是我实际项目中出现的,以前都是310没有在意(This algorithm is patented and is excluded in this configuration; 专利已经被注册),继续search OPENCV_ENABLE_NONFREE,打钩,然后点击 generate
2、在rebuild目录下(生成好的)下找到 opencv.sln 用VS2015打开 然后点击 CMakeTargets ALL_BUILD 右击生成 最后成功 138 个
当然了,现在还没有结束,因为找不到install 这个文件夹 so ALL_BUILD下面继续有一个 INSTALL ,右击生成,然后就可以配置环境了
开始重新配置环境:我是配置了310 后重新编译 344 版本的 两者没关系 310 的不要看 都是一样的 可能截图还有 310的东西,自动忽略
找到视图 属性管理器
VC++目录 包含目录
库目录
链接器
读出链接器中所有的文件,我是在 Intellijea 下的 Java写我的 /**
* @param: dir rebulid 目录下的 install/x64/vc14/lib 的目录
* @Function: 读取文件从指定饿的目录下面
* @Return:
*/
private static void ReadFileFromDir(String dir) {
int i = 0;
File file = new File(dir);
if (file.isDirectory()) {
System.out.println("是目录可以读取");
File[] files = file.listFiles();
for (File f : files) {
if (f.getName().endsWith(".lib")) {
i++;
System.out.println(f.getName());
}
}
} else
System.out.println("Error");
System.out.println("一共 " + i + " 个");
} 读出所有的 .lib 文件
最后环境变量: 找到rebuild install x64 vc14 bin 添加到环境变量中去
@attention: CMake和 添加 opencv的环境变量后 电脑都需要重启 ,不然和没有添加报一样的错误
看看自己有没有成功: 新建 win32 控制台项目 空项目 添加 include<> 对的文件 ,建立命名空间
int main(int argc,char** argv){
Mat src =imread("test.jpg");
if(src.empty()){
std::cout<<"Error!!!";
}
namedShow("src");
imshow("src",src):
waitKey(0);
return 0:
}
本人最自己编译好的 vs2015+opencv344 扩展模块和
vs2013+opencv330扩展模块 需要的在下方留言