一、环境基础
如下为笔者的机器环境,不用可以保持相同!
- ubuntu 20
- openCV 4.5.0
- cmake 3.18.0-rc3
- gcc 7.5.0
- g++ 7.5.0
二、用cmake构建openCV项目(源码)
2.1 主程序代码
该代码技术含量不大,请参考openCV实例!
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace cv;
int main(int argc,const char* argv[]){
// 图片用绝对路径,注意更改为存在的图片!
Mat srclmage = imread("/home/darling/sakura.jpg");
imshow("[ 原图 ] ",srclmage);
//进行均值滤波操作
Mat dstlmage;
blur(srclmage, dstlmage, Size(7, 7));
imshow ("[ 均值滤波器效果图 ] ", dstlmage);
waitKey(0);
return 0;
}
2.2 cmake配置
# 设置cmake要求的最低版本号
cmake_minimum_required(VERSION 3.5)
# 设置项目名
project(1_c_plus LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# find required opencv(找到了该库,才可用下面的相关变量)
# find_package这个指令以被用来在系统中自动查找配置构建工程所需的程序库。在linux和unix类系统下这个命令尤其有用。CMake自带的模块文件里有大半是对各种常见开源库的find_package支持,支持库的种类非常多。
find_package(OpenCV REQUIRED)
# 添加openCV头文件所在目录
include_directories(
/usr/local/include
${OpenCV_INCLUDE_DIRS}
)
# 添加openCV库文件所在目录
LINK_DIRECTORIES(${OpenCV_LIBRARY_DIRS})
# 设定生成的可执行文件名字
add_executable(6_opencv_demo OpenCVDemo.cpp)
# 设置库文件的路径
target_link_libraries(6_opencv_demo ${OpenCV_LIBS})
cmake的具体配置,在openCV实例中也给出了,注意查看!这里需要特别注意find_package指令,只有使用这个指令找到openCV的相关环境变量,下面才能使用如 OpenCV_INCLUDE_DIRS、OpenCV_LIBRARY_DIRS等变量!
2.2.1 SET指令的语法
SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
2.2.2 project指令的语法
PROJECT(projectname [CXX] [C] [Java])
2.3 构建与执行
使用QT可以直接Run。
而控制台下,那么就用cmake对代码进行编译,具体流程编译流程如下:
最后执行./6_opencv_demo运行即可!