目录

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

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

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

简介

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

那个是安装在全局的环境中的,现在呢考虑到项目的迁移性,所以希望可以将opencv当一个三方库在项目中使用,这样的话更加的灵活。

那么下面呢就介绍如何操作吧!

下载opencv source

如题所示就是到opencv的官网下载你需要的版本

https://i-blog.csdnimg.cn/direct/0a38e94983484d80a66877eb275cc58b.png

我这里下载的是4.5.4的版本,然后在本地进行解压

https://i-blog.csdnimg.cn/direct/077a40e5b0dd443fa400f996369c7a37.png

解压完成以后,就需要给解压出来的文件放到对应项目的对应文件夹中

那么我这里是给它放到了third_party文件中了

https://i-blog.csdnimg.cn/direct/c3ba55d30f0648809276e9ce2a21a324.png

编译

完成了上面的操作以后,就需要开始进行编译了。编译的时候呢也需要有一些前期的准备工作。

首先就是需要在opencv-4.5.4的目录下新建一个build文件夹,这里我建的是opencv_build这个目录

https://i-blog.csdnimg.cn/direct/77c634532f6d4594a4799b688b379be9.png

完成了这个操作以后呢,就需要进入到这个build目录下

opencv_build

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

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

https://i-blog.csdnimg.cn/direct/41a1c0c9138e4d998ff7ed784a0f1cd7.png

https://i-blog.csdnimg.cn/direct/c7b5258159ca439eab06bd6131ecd69c.png

然后就是需要进行编译了,需要根据自己的设备性能进行编译:

make -j8

https://i-blog.csdnimg.cn/direct/879ab21425bc436795852161f981a47b.png

这个过程可能需要一段时间,大概10分钟以内可以完成。

看到如下的结果表示成功

https://i-blog.csdnimg.cn/direct/4a31715bb11145c29410a00f06679d77.png

测试

当完成了上述的所有工作以后,其实opencv就应该是可以使用了的。

但是我们依然还是需要测试一下的。首先需要创建一个测试文件用于写测试代码:

https://i-blog.csdnimg.cn/direct/698500f6da8f4829bef2153570500d12.png

比如我这里的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})

执行验证一下:

https://i-blog.csdnimg.cn/direct/e0f57f1f997b47b095af3913255187a4.png

可以看到这样就是ok了。