1.安装环境
(vs2019,cmake -3.29.0-rc3,python-3.10.4-amd64,QT6.6.2,QT5.15.2)
1. 设置好python环境变量,
2. 下载opencv4.9.0 源码,opencv_contrib-4.x源码,OpenBLAS库
注意: 我用VS2019 编译opencv3.4.15/3.4.12 几次都没成功,可能要用VS2017
3. 运行CMake
配置OPENCV_EXTRA_MODULES_PATH
BUILD_opencv_world (不勾选)
WITH_QT
4. 需要设置QT6 和QT5的CMake目录
QT5_DIR D:/Qt6/5.15.2/msvc2019_64/lib/cmake/Qt5
QT6_DIR D:/Qt6/6.6.2/msvc2019_64/lib/cmake/Qt6
注意: 我开始没有设置QT6_DIR ,编译不成功,opencv4.9.0应该要用QT6
5. BUILD_opencv_world
勾选 BUILD_opencv_world:此项的目的是生成一个dll文件,比如:opencv_world430d.dll。
//这里先去掉
6. OPENCV_DNN_CUDA
OPENCV_DNN_CUDA (我没勾选)
7. OPENCV_ENABLE_NONFREE
勾选 OPENCV_ENABLE_NONFREE:此项目的是编译contrib模块。
8. OPENCV_EXTRA_MODULES_PATH
设置OPENCV_EXTRA_MODULES_PATH:设置contrib模块的目录:(注意一定到modules这个目录)
9. WITH_CUDA
不勾选勾选WITH_CUDA。我勾选后编译出现好几个找不到文件的问题
新的CUDA不带编码和解码库,
勾选WITH_OPENGL
- 需要设置gflags和glog的include目录和lib
注意:这两个东西需要下载源码编译,用cmake ,vs2019
这两个库是以动态库方式编译进去的,运行时候还必须要能找到这两个库的DLL 程序

bin是我的编译目录,需要设置这个Gflags_DIR = “D:/opencv/glags/bin”
GLOG_DIR = “D:/opencv/glog/bin”
BUILD_opencv_wechat_qrcode 取消
10. 需要配置VTK 目录
这个也需要下载编译,VTK 源码直接和opencv 一起编译,
设置VTK_DIR = D:/opencv/VTK-8.2.0/build (build是VTK的cmake目标目录)
- Configure
1,有些文件会下载失败,打开CMakeDownloadLog.txt ,手动下载文件并拷贝到指定目录。
11. 设置 OpenBLAS
(或者按照后面的方法去修改OpenCVFindOpenBLAS.cmake文件)
查询 BLAS ,勾选Grouped,Advaced
设置OpenBLAS_INCLUDE_DIR OpenBLAS_LIB

win10编译opencv4报错找不到openblas
问题1
Could not find OpenBLAS include. Turning OpenBLAS_FOUND off
Could not find OpenBLAS lib. Turning OpenBLAS_FOUND off
...
Could NOT find BLAS (missing: BLAS_LIBRARIES)
Could NOT find LAPACK (missing: LAPACK_LIBRARIES)
Reason given by package: LAPACK could not be found because dependency BLAS could not be found.
解决方法:
- https://github.com/xianyi/OpenBLAS/releases直接下载编译好的openblas,或者根据源码自己编译
- 在...\opencv-4.5.5\cmake\OpenCVFindOpenBLAS.cmake中添加openblas的路径:
SET(Open_BLAS_INCLUDE_SEARCH_PATHS
...
.../Github/OpenBLAS-0.3.21-x64/include
)
SET(Open_BLAS_LIB_SEARCH_PATHS
...
.../Github/OpenBLAS-0.3.21-x64/lib
)
问题2 OGRE3D was not found
Module opencv_ovis disabled because OGRE3D was not found
ChatGPT:
这个问题是由于在编译OpenCV时未找到OGRE3D库所致。OGRE3D是用于Opencv中的一种可选依赖项,用于支持可视化和渲染功能。要解决这个问题,你有几种选择:
安装OGRE3D:你可以尝试安装OGRE3D库,并确保其路径在你的编译环境中可见。然后重新编译OpenCV,这样就应该能够解决这个问题。你可以从OGRE3D的官方网站上找到安装说明和下载链接。
禁用OPENVIS模块:如果你不需要OpenCV的可视化和渲染功能,可以在编译时禁用OPENVIS模块,这样就不会再出现这个错误。在CMake配置时,将OPENCV_ENABLE_NONFREE设置为OFF。
使用预编译的OpenCV版本:你也可以尝试使用预编译的OpenCV版本,这样你就不需要自己编译,而且通常这些预编译版本已经包含了所需的依赖项,可以减少配置的麻烦。
无论你选择哪种方法,确保你的编译环境和依赖项都正确设置,这样就可以成功编译OpenCV了。
已经解决:
设置OGRE_DIR = D:/opencv/ogre-sdk-v14.2.3-msvc142-x64/CMake
问题3 OpenJPEG问题
Could NOT find OpenJPEG (minimal suitable version: 2.0, recommended version >= 2.3.1). OpenJPEG will be built from sources
OpenJPEG: VERSION = 2.5.0, BUILD = opencv-4.9.0-openjp2-2.5.0
OpenJPEG libraries will be built from sources: libopenjp2 (version "2.5.0")
这个问题一直没解决,下载了2.5.2 设置了路径都不行。
测试程序
// opencvtest1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/xfeatures2d.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <iostream>
using namespace cv;
using namespace std;
using namespace cv::xfeatures2d;
int main()
{
std::cout << "Hello World!\n";
Mat src = imread("G:/TT/house1.jpg", IMREAD_GRAYSCALE);
if (src.empty()) {
printf("could not load image...\n");
return -1;
}
namedWindow("input image", CV_WINDOW_AUTOSIZE);
imshow("input image", src);
int numFeatures = 400;
Ptr<SIFT> detector = SIFT::create(numFeatures);
vector<KeyPoint> keypoints;
detector->detect(src, keypoints, Mat());
printf("Total KeyPoints : %d\n", keypoints.size());
Mat keypoint_img;
drawKeypoints(src, keypoints, keypoint_img, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
namedWindow("SIFT KeyPoints", CV_WINDOW_AUTOSIZE);
imshow("SIFT KeyPoints", keypoint_img);
waitKey(0);
}
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
// 入门使用技巧:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
注意:
- 设置INCLUDE 包含目录,还有LIB库目录
- VS 附加链接库Lib ,以下是所有lib
opencv_alphamat490.lib
opencv_aruco490.lib
opencv_bgsegm490.lib
opencv_bioinspired490.lib
opencv_calib3d490.lib
opencv_ccalib490.lib
opencv_core490.lib
opencv_cvv490.lib
opencv_datasets490.lib
opencv_dnn_objdetect490.lib
opencv_dnn_superres490.lib
opencv_dnn490.lib
opencv_dpm490.lib
opencv_face490.lib
opencv_features2d490.lib
opencv_flann490.lib
opencv_fuzzy490.lib
opencv_hfs490.lib
opencv_highgui490.lib
opencv_gapi490.lib
opencv_hfs490.lib
opencv_img_hash490.lib
opencv_img_hash490.lib
opencv_imgcodecs490.lib
opencv_imgproc490.lib
opencv_intensity_transform490.lib
opencv_line_descriptor490.lib
opencv_mcc490.lib
opencv_ml490.lib
opencv_objdetect490.lib
opencv_optflow490.lib
opencv_ovis490.lib
opencv_phase_unwrapping490.lib
opencv_photo490.lib
opencv_plot490.lib
opencv_quality490.lib
opencv_rapid490.lib
opencv_reg490.lib
opencv_rgbd490.lib
opencv_saliency490.lib
opencv_sfm490.lib
opencv_shape490.lib
opencv_signal490.lib
opencv_stereo490.lib
opencv_stitching490.lib
opencv_structured_light490.lib
opencv_superres490.lib
opencv_surface_matching490.lib
opencv_text490.lib
opencv_tracking490.lib
opencv_video490.lib
opencv_videoio490.lib
opencv_videostab490.lib
opencv_viz490.lib
opencv_xfeatures2d490.lib
opencv_ximgproc490.lib
opencv_xobjdetect490.lib
opencv_xphoto490.lib
WIN10+VS2019+OpenCV-4.8.0
(With_qt+cuda+cudnn)
版本:cuda_12.0.0_527.41_windows.exe cudnn-windows-x86_64-8.9.6.50_cuda12-archive.zip
ippicv_2021.8_win_intel64_20230330_general.zip
Openv-4.8.0 + opencv_contrib-4.8.0
就用上面的方法,安装cuda12.0 后,把cudnn 解压后的文件拷贝到cuda安装目录下
勾选opengl qt
设置glog,gflags的include目录和build目录,设置ogre,openblas,vtk的相关目录
我编译成功:
注意 opencv_videoio_ffmpeg_64.dll 不能直接拷贝4.9.0的,需要重新下载4.8.0所对于版本
详见CMakeDownloadLog.txt 里面下载路径, 这些文件因网络问题需要手动下载,然后拷贝到对应目录下,再重新configure
8649

被折叠的 条评论
为什么被折叠?



