本篇介绍如何在c++ 中如何调用 opencv,包括在 Linux 系统(以 Ubuntu 18.04 为例)上安装 opencv,以及在 c++ 代码中使用。

安装 opencv

安装 opencv 的方式有两种,一种是通过 Ubuntu 的包管理器 apt 或 aptitude,另一种是通过从源码编译安装。一般包管理器安装的 opencv 版本比较低,通过编译安装可以灵活的选择不同的版本,特别是最新的版本。

包管理器安装

sudo apt update && sudo apt install libopencv-dev # or sudo aptitude update && sudo aptitude install libopencv-dev 

编译安装

主要参考 opencv 官网编译安装教程,大体步骤如下:

sudo apt install -y g++ cmake git wget unzip build-essential pkg-config libgtk2.0-dev # 如果安装中遇到依赖问题,可以尝试 aptitude 来安装 wget https://github.com/opencv/opencv/archive/refs/tags/4.9.0.zip unzip 4.9.0.zip mv opencv-4.9.0 opencv mkdir build && cd build // 也可以显示指定发布版本release,安装目录/usr/local,这是默认安装的路径可以不指定 // 指定生成 pkgconfig,如果没有指定,后面可以手动配置 // 是否包含 ffmpeg 等 // cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_GENERATE_PKGCONFIG=ON -D WITH_FFMPEG=ON ../opencv cmake ../opencv make -j`nproc` # 根据服务器的CPU核心数设置,make -j$(nproc) // 把编译后的程序和库等拷贝到系统对应目录下进行安装 sudo make install 

配置

编译安装后,还需要进行配置,才能够使用:

1)添加库路径

sudo echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf # or sudo echo "include /usr/local/lib" >> /etc/ld.so.conf # 使生效 sudo ldconfig 

2)添加环境变量:

# 如果你使用的是bash,需要把 .zshrc 改为 .bashrc echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" >> ~/.zshrc echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib" >> ~/.zshrc # 使生效 sourc ~/.zshrc 

3)创建 opencv.pc,如果前面编译时没有指定 -D OPENCV_GENERATE_PKGCONFIG=ON,那么需要手动创建 opencv.pc:

sudo cat > /usr/local/lib/pkgconfig/opencv.pc <<-"EOF" # Package Information for pkg-config prefix=/usr/local exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include/opencv4 Name: OpenCV Description: Open Source Computer Vision Library Version: 4.9.0 Libs: -L${exec_prefix}/lib -lopencv_gapi -lopencv_highgui -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_video -lopencv_calib3d -lopencv_features2d -lopencv_dnn -lopencv_flann -lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc -lopencv_core Libs.private: -ldl -lm -lpthread -lrt Cflags: -I${includedir} EOF 

4)查看OpenCV信息:

# 对于包管理工具安装的 pkg-config --modversion opencv pkg-config --libs opencv pkg-config --cflags opencv # 对于编译安装的 pkg-config --modversion opencv4 pkg-config --libs opencv4 pkg-config --cflags opencv4 

测试

使用源代码中的示例测试是否编译正确

cd opencv/samples/cpp/example_cmake/ cmake . make # 执行程序,会自动打开本地摄像头 ./opencv_example 

C++ 调用 opencv

打开 vscode,创建文件夹 show_img,在该文件夹下创建源文件 show.cpp:

#include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/highgui.hpp> int main() { std::string window_name = "hello"; cv::namedWindow(window_name, cv::WindowFlags::WINDOW_AUTOSIZE); // 图片路径 std::string image_path = "/disk0/downloads/fluid-frame0.png"; // 读取图片,参数分别是图片路径、读取模式 cv::Mat img = cv::imread(image_path, cv::IMREAD_COLOR); // 检查图片是否成功加载 if (img.empty()) { std::cout << "cannot open image" << std::endl; return -1; } // 显示图片 const int WIDTH = 480; const int HEIGHT = 640; cv::resizeWindow(window_name, WIDTH, HEIGHT); cv::imshow(window_name, img); // 等待用户按键,等待时间(毫秒) cv::waitKey(0); // 查看opencv的版本 std::cout << "OpenCV version : " << CV_VERSION << std::endl; std::cout << "Major version : " << CV_MAJOR_VERSION << std::endl; std::cout << "Minor version : " << CV_MINOR_VERSION << std::endl; std::cout << "Subminor version : " << CV_SUBMINOR_VERSION << std::endl; return 0; } 

然后,编译:

# 使用包管理工具安装的OpenCV g++ -std=c++11 show.cpp `pkg-config --libs --cflags opencv` -o show # 执行 ./show # 使用编译安装的OpenCV g++ -std=c++11 show.cpp `pkg-config --libs --cflags opencv4` -o show4 # 执行 ./show4 

借助 cmake 编译,首先创建 CMakeLists.txt:

cmake_minimum_required(VERSION 3.10.2) project( show ) find_package( OpenCV REQUIRED ) include_directories( ${OpenCV_INCLUDE_DIRS} ) add_executable( show show.cpp ) target_link_libraries( show ${OpenCV_LIBS} ) 

然后编译并执行:

mkdir build cd build cmake .. make # 执行 ./show 

以上就是c++ 中如何调用 opencv的全部步骤详解,希望对你有帮助哦。