环境
Windows 10 家庭中文版
OpenCV 2.4.13
CMake 3.7.2
Visual Studio 2015 update 3
注:
OpenCV 3+
和VS 2017
同理,新教程Windows编译安装OpenCV 3.4.3(CMake + VS2017)。
使用exe安装的问题
- 在
Windows上
安装OpenCV
后,如果是直接使用Visual Studio
来创建工程的话,每次都要配置头文件和库文件,非常麻烦 - 由于官方使用的编译器版本和个人使用的编译器版本不一致造成的动态库的缺少(
MSVCP120.dll、MSVCP120d.dll、MSCVR120d.dll
…等) - 使用
CMake
找不到OpenCV
- 不能很方便的学习
OpenCV
的源代码
解决
OpenCV
是一个使用CMake
(CMake是一个自动化构建工具,具体的可以去官网查看)构建项目的开源项目,可以和方便的使用CMake
进行编译安装,可以解决上面的所有问题。
使用CMake生成OpenCV的32位工程
打开cmd并进入到OpenCV解压的根目录下,执行以下命令:
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=D:/opencv
这样CMake
就生成了Visual Studio
的工程,上面的命令中的路径是编译后的安装位置,本次教程里只是生成了x86
也就是32位下使用的库文件。
使用Visual Studio2015编译安装OpenCV
这一步也可以直接用命令行进行,不过这样更直观
进入上面的build
的目录,找到OpenCV.sln
,打开,接下来分别编译生成并安装Release
和Debug
使用的库文件:
生成Debug版的Win32库文件并安装
找到ALL_BUILD项目
右键build
如果编译后没有错误(报ALL_BUILD不能运行那个不算),就可以安装了,
然后就可以在上一步指定的目录中找到安装的OpenCV了。
生成Release版本的Win32库文件
接下来的和上面一样。
最终的安装路径中的文件应该为
检查下x86下的库文件,x86/vc14/lib
和x86/vc14/bin
中均有Debug(结尾有d的库文件)和Release的库文件。
环境变量
将OpenCV安装目录的根目录和bin目录包含到环境变量中(登出一下)。
测试是否成功
新建一个CMake工程
/-testcv
|- src
| |- main.cpp
|
|- CMakeLists.txt
/
main.cpp代码
#include <iostream>
#include <opencv2\opencv.hpp>
int main(int argc, char *argv[])
{
cv::Mat frame;
cv::VideoCapture camera(0);
while(1)
{
camera >> frame;
cv::imshow("camera", frame);
cv::waitKey(30);
}
return 0;
}
CMakeLists.txt代码(提供的这个通用模板已经可以满足日常小项目了)
cmake_minimum_required(VERSION 3.0)
set(PROJECT_NAME testcv)
project(${PROJECT_NAME})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
file(GLOB_RECURSE HEADERS *.h)
source_group("Header Files" FILES ${HEADERS})
aux_source_directory(src DIR_SRCS)
find_package(OpenCV REQUIRED)
if(OpenCV_FOUND)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(${PROJECT_NAME} ${DIR_SRCS} ${HEADERS})
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
endif()
打开命令行,进入test目录:
mkdir build
cd build
cmake ..
进入build目录,打开testcv.sln,查看一下配置中的库文件和头文件都没有问题
Debug
Release
然后设置testcv为启动项,编译运行,可以打开摄像头并看到录像。OK
生成64位库
查看电脑支持的Generators
cmake -h
找到Generators
,
例如生成VS2015的64位工程的命令为
cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=D:/opencv ..
接下来的步骤和上述生成32位的库一致。
总结
- 使用CMake来管理需要大量配置库和头文件的项目,非常方便。
- OpenCV使用官方的exe文件安装后可用,但有可能遇到编译器版本造成的库版本不一致的问题。
- 如果需要生成x64的库,在第一步的时候,指定生成x64就可以。
本文由VS软件圈(vssoft.net)发布,不代表VS软件圈立场,转载联系作者并注明出处:https://vssoft.net/vsazwt/VS2015anzhuangwenti/2020/0725/5045.html