行业资讯 2025年08月6日
0 收藏 0 点赞 333 浏览 3492 个字
摘要 :

文章目录 安装 opencv 包管理器安装 编译安装 配置 测试 C++ 调用 opencv 本篇介绍如何在c++ 中如何调用 opencv,包括在 Linux 系统(以 Ubuntu 18.04 为例)上安装 op……




  • 安装 opencv
  • 包管理器安装
  • 编译安装
  • 配置
  • 测试
  • C++ 调用 opencv

本篇介绍如何在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的全部步骤详解,希望对你有帮助哦。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/10214.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号