OpenCV 作为第三方库编译并在 C++ 项目中使用

发布于:2025-03-14 ⋅ 阅读:(15) ⋅ 点赞:(0)

好久不见了,距离上一次更新博文也大概有一个多月了。本次主要是做一次记录。记录opencv如何作为一个三方库在项目中使用。

简介

记得大概在2019年的时候吧,我写过一篇关于如何在ubtuntu下安装opencv的文章,反响还是挺好的很多人都看过。ubuntu安装opencv的正确方式

那个是安装在全局的环境中的,现在呢考虑到项目的迁移性,所以希望可以将opencv当一个三方库在项目中使用,这样的话更加的灵活。
那么下面呢就介绍如何操作吧!

下载opencv source

如题所示就是到opencv的官网下载你需要的版本
在这里插入图片描述
我这里下载的是4.5.4的版本,然后在本地进行解压
在这里插入图片描述
解压完成以后,就需要给解压出来的文件放到对应项目的对应文件夹中
那么我这里是给它放到了third_party文件中了
在这里插入图片描述

编译

完成了上面的操作以后,就需要开始进行编译了。编译的时候呢也需要有一些前期的准备工作。
首先就是需要在opencv-4.5.4的目录下新建一个build文件夹,这里我建的是opencv_build这个目录
在这里插入图片描述
完成了这个操作以后呢,就需要进入到这个build目录下

opencv_build

接着就是执行下面的命令进行如下的操作

cmake ../ -DCMAKE_INSTALL_PREFIX=../opencv_install -DBUILD_SHARED_LIBS=ON

在这里插入图片描述
在这里插入图片描述
然后就是需要进行编译了,需要根据自己的设备性能进行编译:

make -j8

在这里插入图片描述
这个过程可能需要一段时间,大概10分钟以内可以完成。
看到如下的结果表示成功
在这里插入图片描述

测试

当完成了上述的所有工作以后,其实opencv就应该是可以使用了的。
但是我们依然还是需要测试一下的。首先需要创建一个测试文件用于写测试代码:
在这里插入图片描述
比如我这里的cv01.h
具体代码如下:


#ifndef COMPUTERVISION_CV01_H
#define COMPUTERVISION_CV01_H

#include <iostream>
#include <opencv2/opencv.hpp>
#include <unistd.h>

int show() {
    // 打印当前工作目录
    char cwd[1024];
    if (getcwd(cwd, sizeof(cwd)) != NULL) {
        std::cout << "Current working directory: " << cwd << std::endl;
    } else {
        perror("getcwd() error");
        return -1;
    }

    // 读取图片
    cv::Mat image = cv::imread("../cvSrc/img.png");

    // 检查是否读取成功
    if (image.empty()) {
        std::cerr << "Could not open or find the image!" << std::endl;
        return -1;
    }

    // 创建窗口并显示图片
    cv::imshow("Image", image);
    cv::waitKey(0);

    return 0;
}

#endif //COMPUTERVISION_CV01_H

然后就是写CMakeLists.txt
具体如下:

cmake_minimum_required(VERSION 3.26)
project(ComputerVision)

set(CMAKE_CXX_STANDARD 17)

# 设置 OpenCVConfig.cmake 的路径
set(OpenCV_DIR /ClionProjects/ComputerVision/third_party/opencv-4.5.4/opencv_build)

# 使用 find_package 查找 OpenCV
find_package(OpenCV REQUIRED)

# 包含 OpenCV 头文件
include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(ComputerVision main.cpp
        src/eigen01.h
        cvSrc/cv01.h)

# 链接 OpenCV 库
target_link_libraries(ComputerVision ${OpenCV_LIBS})


执行验证一下:
在这里插入图片描述

可以看到这样就是ok了。