OpenCV 源码编译并启用 .pc 文件生成

OpenCV 源码编译并启用 .pc 文件生成

  • [OpenCV 源码编译并启用 .pc 文件生成](#OpenCV 源码编译并启用 .pc 文件生成)
    • 前言
    • 编译
      • [1. 进入构建目录](#1. 进入构建目录)
      • [2. 清除之前的 CMake 配置](#2. 清除之前的 CMake 配置)
      • [3. 重新配置,启用 PKGCONFIG 生成和 pkgconfig](#3. 重新配置,启用 PKGCONFIG 生成和 pkgconfig)
      • [4. 编译](#4. 编译)
      • [5. 安装](#5. 安装)
    • 验证安装
      • [检查 .pc 文件是否生成](#检查 .pc 文件是否生成)
      • [测试 pkg-config](#测试 pkg-config)
      • [验证 freetype 库是否存在](#验证 freetype 库是否存在)
    • 常见用法
    • 参考资料

OpenCV 源码编译并启用 .pc 文件生成

前言

在使用 pkg-config 管理 OpenCV 依赖时,需要 .pc 文件来获取编译 flags 和库链接信息。然而 OpenCV 默认编译安装并不会生成 pkg-config 文件。在编译 OpenCV 时启用 .pc 文件生成。


编译

1. 进入构建目录

可以创建目录build

bash 复制代码
mkdir -p build && cd build

2. 清除之前的 CMake 配置

bash 复制代码
rm

3. 重新配置,启用 PKGCONFIG 生成和 pkgconfig

bash 复制代码
cmake -DOPENCV_GENERATE_PKGCONFIG=ON -DWITH_FREETYPE=ON ..

关键参数说明:

  • -DOPENCV_GENERATE_PKGCONFIG=ON:启用 pkg-config 文件生成

4. 编译

bash 复制代码
make -j8

使用 -j8 参数进行 8 线程并行编译,可根据 CPU 核心数调整。

5. 安装

bash 复制代码
sudo make install

验证安装

检查 .pc 文件是否生成

bash 复制代码
ls -la /usr/local/lib/pkgconfig/opencv4.pc

测试 pkg-config

bash 复制代码
pkg-config --modversion opencv4

输出示例:

复制代码
# pkg-config --modversion opencv4
4.8.0

验证 freetype 库是否存在

bash 复制代码
ls -la /usr/local/lib/libopencv_freetype*

常见用法

安装完成后,可以使用 pkg-config 获取编译参数:

bash 复制代码
# 获取编译 flags
pkg-config --cflags opencv4

# 获取链接 flags
pkg-config --libs opencv4

# 同时获取两者
pkg-config --cflags --libs opencv4

参考资料

  1. OpenCV GitHub 仓库
  2. OpenCV 4.8.0 Linux 安装官方文档
相关推荐
Hua-Jay17 小时前
OpenCV联合C++/Qt 学习笔记(二十二)----相机模型与投影及单目相机标定
c++·笔记·qt·opencv·学习·计算机视觉
sali-tec18 小时前
C# 基于OpenCv的视觉工作流-章74-线-线距离
图像处理·人工智能·opencv·算法·计算机视觉
问窗19 小时前
计算机视觉入门案例 高速公路车辆计数系统技术解析
python·opencv·计算机视觉
爱炸薯条的小朋友2 天前
全局锁的性能优势,以及链路优化为何常常低于预期——基于 `MatPoolsTest` 中小图池与大图池的实战复盘
opencv·算法·c#
m0_617493942 天前
OpenCV报错解决:cornerSubPix断言失败 src.channels() == 1 的终极指南
人工智能·opencv·计算机视觉
weixin_307779132 天前
OCR图片文本提取代码
图像处理·python·opencv·自动化·ocr
勤自省2 天前
ROS2 + OpenCV 实战教程:人脸识别、物体跟踪、ArUco 二维码识别初级
人工智能·opencv·ubuntu·计算机视觉·ros2
爱炸薯条的小朋友2 天前
C#的详细应用和讲解池化为什么能提升 OpenCvSharp / Mat 的整体效率
开发语言·opencv·c#
欲儿2 天前
magicCamera——利用相机识别纸牌并替换为特定纸牌
opencv·ar·安卓开发·轮廓检测·纸牌识别
listhi5203 天前
Harris算子特征点提取、匹配和提纯的程序实现
人工智能·opencv·计算机视觉