OpenCV 作为第三方库编译并在 C++ 项目中使用
好久不见了,距离上一次更新博文也大概有一个多月了。本次主要是做一次记录。记录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了。