Windows10 环境编译OpenCV

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

  1. 需要设置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目标目录)

  1. 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.

解决方法:

  1. https://github.com/xianyi/OpenBLAS/releases直接下载编译好的openblas,或者根据源码自己编译
  2. ...\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 文件

注意:

  1. 设置INCLUDE 包含目录,还有LIB库目录

  1. 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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值