近期,有个项目中需要用到OpenCV4.5.4
在Windows
下的Debug x86
版本。而官方给出的是Debug/Release x64
版本的,因此只能将OpenCV4.5.4
源码编译一下。
工具准备
- OpenCV4.5.4源码获取
官网下载速度堪忧,给出百度云链接:
链接:https://pan.baidu.com/s/1lrN5_qc2Xc4INm_CGtBcTg
提取码:8khy
OpenCV
默认提供的版本是Debug/Release x64
,因此我们不需要第一个文件夹。
- CMake3.21.3下载与安装
为了偷懒(其实是不熟悉CMake的使用),直接下载CMake
的图形化版本
直接默认安装即可,其中有一步添加环境变量勾选一下,免得后续手动添加
- VS2019下载与安装
CMake生成opencv项目
在使用CMake
编译源码之前,在目录下新建一个空文件夹buildx86
打开cmake-gui
。源路径:D:\BaiduNetdiskDownload\opencv\sources
,输出路径:D:\BaiduNetdiskDownload\opencv\buildx86
路径添加正确后,直接点击Configure
第一个勾选VS 2019
,第二个选择Win32
,千万别选错!点击Finish
来到飘红的界面,莫要着急继续Generate
。必须去查看一下CMakeDownloadLog.txt
文件,看一下是否有什么文件没有下载下来。也可以选择去源路径的.cache
文件夹下查看是否有0KB
的文件。缺少的话一定要按照提供的网址去下载下来并放在对应位置。
文件齐全后,勾选BUILD_EXAMPLES
和BUILD_OPENCV_WORLD
后,继续Generate
。
出现此界面,成功了99%。一定要继续查看一下CMakeDownloadLog.txt
,确保万无一失
VS2019生成install文件
点击Open Project
即可打开工程。若是已经关闭CMake
,去输出路径找OpenCV.sln
,直接双击也可
确保选择Debug Win32
模式
打开解决方案,在CMakeTargets
中选择INSTALL
,右击生成,开始生成install
文件
这需要一点时间,可以去倒杯茶喝喝先!
这里出现一个报错:无法打开文件"python36_d.lib"。对于C++
使用OpenCV
应该没有影响。
环境配置与测试
新建一个test
工程,选择Debug x86
模式
#include <opencv2/highgui.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
int main()
{
cv::Mat M(3, 3, CV_32FC2, cv::Scalar(1, 3));
// M.create(5, 5, CV_8UC(3));
std::cout << "==默认风格==\n" << cv::format(M, cv::Formatter::FMT_DEFAULT) << std::endl;
std::cout << "==Python风格==\n" << cv::format(M, cv::Formatter::FMT_PYTHON) << std::endl;
std::cout << "==Numpy风格==\n" << cv::format(M, cv::Formatter::FMT_NUMPY) << std::endl;
std::cout << "==C风格==\n" << cv::format(M, cv::Formatter::FMT_C) << std::endl;
return 0;
}
将包含目录,库目录添加好
链接器
→
\to
→输入,添加.lib
文件
至于opencv_world454.dll
文件直接放在工程文件夹下以供调用,免得添加环境变量
输出结果
==默认风格==
[1, 3, 1, 3, 1, 3;
1, 3, 1, 3, 1, 3;
1, 3, 1, 3, 1, 3]
==Python风格==
[[[1, 3], [1, 3], [1, 3]],
[[1, 3], [1, 3], [1, 3]],
[[1, 3], [1, 3], [1, 3]]]
==Numpy风格==
array([[[1, 3], [1, 3], [1, 3]],
[[1, 3], [1, 3], [1, 3]],
[[1, 3], [1, 3], [1, 3]]], dtype='float32')
==C风格==
{1, 3, 1, 3, 1, 3,
1, 3, 1, 3, 1, 3,
1, 3, 1, 3, 1, 3}
成功!