opencv最新版本源码编译及配置(win11+vs studio2022+opencv-4.9.0+opencv_contrib-4.9.0+cmake)小白教程

前言 

使用opencv有三种方法(目前我知道的)

  1. 直接在终端pip install opencv-python但是我们用C++,这个就不适用了
  2. 直接在官网用它已经编译好了的,但是他不包含额外的库,比如人脸识别(这是在额外的库opencv_contrib里)下载地址
  3. 拉取源码,自己cmake编译,然后生成解决方案,再install生成可用的库(可定制化,cmake过程中可勾选WITH_QT,WITH_OPENGL)OpenCV (github.com)

今天我采用的就是第三种

拉取源码后的构建和编译方式:

构建使用cmake工具

编译(二选一):

1. 使用vs studio,这个就属于msvc环境编译源码

2. 使用mingw进行编译

拉取源码

我已经从Github将源码拷贝下来了:

链接: https://pan.baidu.com/s/1RDdrhjWxAvewmyjXIjHseA?pwd=53hy 提取码: 53hy 复制这段内容后打开百度网盘手机App,操作更方便哦

在opencv历史版本里找到我们今天要用的版本4.9.0

opencv_contrib同理。

从github下拉取完源码之后:

CMake构建

下载安装cmake(几分钟就好了)下载地址(我的电脑是64位,windows系统的)

源码地址就是opencv的地址

目标地址就是我们一开始建的空文件夹,cmake之后会构建

点击configue,默认信息一路过着(有梯子这之后就打开着)

然后在这个框框里将Opencv_world勾选上(这里提一嘴,opencv_world这个库,在之后我们自己的项目里使用opencv的时候附加依赖项就可以简化只导入它一个就非常方便,这样我们不用把所有的lib一一写进去了)

第二行填上我们额外的库的路径地址以及把它上面那个勾选上

继续generate

Visual Studio编译(msvc环境)

然后去到我们新建的opencv-build文件夹里找到.sln的文件点击(自动vs studio打开)

然后可以看到:

一般这边就会开始报错了,可能是cmake阶段该下载的没下载(没梯子),用我分享的网盘的download下的文件,按照日志文件(CMakeDownLoadLog.txt)里的内容进行补充

比如将download解压,按照日志文件(CMakeDownLoadLog.txt)的内容找到对应缺失的文件地址复制粘贴带它对应的位置上去(大概要缺失了十几项的样子,日志文件里它也提供了下载地址但是需要梯子才能顺利下载,不然就直接用dowmload里的(百度网盘上面提供了))

另外一种补充方式,还可以在opencv源码文件下新建一个.cache文件夹存放没有下载的(我上面提供的百度网盘里有),这样也能找到,都可以试试

继续——————重新右击生成解决方案,这个时候没报错就行,这里解释一下“生成解决方案”和重新生成解决方案,前者是更新不一样的地方,后者从头来过,所以耗费时间更久。最后找到CMakeTargets下的INSTALL右击仅该项目仅生成,这样就是inatll库成功啦

install下的文件就和官网提供的差不多啦,不过我们是有额外库的内容(有人脸识别)

release模式下的我们就弄好了,顺便更改为debug模式,再来一遍

这部分编译过程会遇到很多问题,不过百度看看咯能不能解决,有些时候就很莫名其妙,这里改改那里改改它就好了,可能也不是什么重要东西吧。。。不管他了

MinGW编译

查看自己gcc的版本 下载地址(mingw)

到opencv的源码路径下打开终端命令行依次输入:

mingw32-make -j8

mingw32-make install

最后在opencv-build下的install:

项目测试【人脸检测】(msvc编译)

引入我们编译好的opencv库,前面分享的百度网盘里我有已经建立一个demo测试项目可以拿来直接用,不过就是图片地址得按照你们的改改

在项目中引入opencv库

最重要的是把opencv_world这个添加到位

最后修改一下相对于你们项目中图片的路径地址

测试结果:

项目测试2【访问摄像头】(MinGW编译)

使用clion编辑器新建一个项目(C++17环境),将编译好的install文件下的include和x64文件放到项目目录下:

main.cpp

#include <iostream>

#include "opencv2/opencv.hpp"

int main() {
    std::cout << "Hello, World!" << std::endl;


    cv::VideoCapture cap(0);
    while (cap.isOpened()) {
        cv::Mat frame;
        cap >> frame;
        if (!frame.empty()) {
            cv::imshow("image", frame);
            cv::waitKey(100);
        }
    }

    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.29)
project(testopencv)

set(CMAKE_CXX_STANDARD 17)
include_directories(./include)
link_directories(./x64/lib)

add_executable(testopencv main.cpp)



target_link_libraries(testopencv D:/project/testopencv/x64/mingw/lib/libopencv_world470.dll.a)

测试摄像头:

以上就是我一步一步编译到测试的过程,很多过程图片当时编译的时候没有截,还不够细致。有问题可留言,大家一起沟通进步~

参考文档:

opencv源码编译及配置完整版教程(win10+vs2019+opencv-4.4.0+opencv_contrib-4.4.0)_、 .4 ,vcvedv-CSDN博客

windows编译opencv+opencv_contrib 以及解决cmake下载boostdesc_bgm等文件失败问题_cmake下载失败-CSDN博客

Opencv4.5.1 源码编译出错 无法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl cvv::gui:: ……_opencv cmake 无法解析的外部符号-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值