ArchLinux配置OpenCV C++环境

news/2024/11/15 15:26:12/文章来源:https://www.cnblogs.com/eslzzyl/p/18368765

本文将简单介绍在 ArchLinux 中安装 OpenCV C++ 库并运行一个简单的 OpenCV 程序的过程。

参考:https://github.com/donaldssh/Install-OpenCV

我的环境

  • 最新的 ArchLinux
  • KDE Plasma 6 桌面环境
  • OpenCV 4.10.0
  • clang 18.1.8
  • gcc 14.2.1

安装

安装以下包:

sudo pacman -S hdf5 vtk glew base-devel pkg-config opencv opencv-samples

安装以下 AUR 包:

paru -S gtkglext

检查 OpenCV 的版本,从而确保它被正确安装了:

pkg-config --modversion opencv4

这会给出 OpenCV 的版本。在我撰写本文时是 4.10.0。

然后将 /usr/lib/pkgconfig 追加到 PKG_CONFIG_PATH 环境变量的末尾。对于 bash 来说,应当添加以下行:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig

对于 fish 来说,应当添加以下行:

set -x PKG_CONFIG_PATH $PKG_CONFIG_PATH /usr/lib/pkgconfig

/etc/ld.so.conf.d/ 目录中新建一个 opencv4.conf 文件,在其中写入以下行:

/usr/include/opencv4

然后执行

sudo ldconfig -v

来生成链接。

编写测试代码

新建一个 main.cpp,填入以下代码:

#include <opencv2/opencv.hpp>
using namespace cv;int main() {const auto img = imread("/usr/share/opencv4/samples/data/lena.jpg");imshow("lena", img);waitKey(0);return 0;
}

使用 Makefile

main.cpp 同级目录下新建一个 Makefile 文件,填入以下内容:

CFLAGS = `pkg-config --cflags opencv4`
LIBS = `pkg-config --libs opencv4`% : %.cppg++ $(CFLAGS) $(LIBS) -o $@ $<

然后执行

make main

将在当前目录下生成一个 main 可执行文件,运行则可得到:

img

按下任意键来关闭此窗口。

使用 CMake

main.cpp 同级目录下新建一个 CMakeLists.txt 文件,填入以下内容:

cmake_minimum_required(VERSION 3.29)
project(OpenCVTest)set(CMAKE_CXX_STANDARD 20)
# find required opencv
find_package(OpenCV REQUIRED)
# directory of opencv headers
include_directories(${OpenCV_INCLUDE_DIRS})
# name of executable file and path of source fileadd_executable(OpenCVTest main.cpp)
# directory of opencv library
link_directories(${OpenCV_LIBRARY_DIRS})
# opencv libraries
target_link_libraries(OpenCVTest ${OpenCV_LIBS})

然后执行

cmake .

完毕后执行

cmake --build .

将在当前目录生成一个 OpenCVTest 可执行文件。运行之,得到与上节相同的效果。

提示

如果在编译过程中提示某个库文件缺失,可以尝试使用

pacman -F [文件名]

来查找提供该文件的软件包并安装之。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/784142.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊如何利用ingress-nginx实现应用层容灾

前言 容灾是一种主动的风险管理策略,旨在通过构建和维护异地的冗余系统,确保在面临灾难性事件时,关键业务能够持续运作,数据能够得到保护,从而最大限度地减少对组织运营的影响和潜在经济损失。因此容灾的重要性不言而喻,今天的话题主要是聊下如何利用ingress-nginx实现应…

一个超全的go工具库Lancet

文档官网 https://www.golancet.cn 安装 使用 go1.18 及以上版本的用户,建议安装 v2.x.x。 因为 v2.x.x 应用 go1.18 的泛型重写了大部分函数。 go get github.com/duke-git/lancet/v2使用 go1.18 以下版本的用户,必须安装 v1.x.x。目前最新的 v1 版本是 v1.4.1。 go get git…

SHELL之变量

一、脚本 1、shell组成 #!脚本声明(使用哪种解释器) # 注释信息 脚本内容注意: 如果直接将解释器路径写死在脚本里,可能在某些系统就会存在找不到解释器的兼容性问题,所以可以使用: #!/bin/env 解释器 #!/bin/env bash2、执行脚本方式 sh -x 脚本文件路径 source 脚…

NSSCFT [SWPUCTF 2022 新生赛]ez_ez_php

NSSCFT [SWPUCTF 2022 新生赛]ez_ez_php进入之后就看见一段php代码,那就直接开始代码审计<?php error_reporting(0); if (isset($_GET[file])) {if ( substr($_GET["file"], 0, 3) === "php" ) {//截取字符串前三个字符,并与php做判断echo "Nic…

同一工程中的低复位

mark: 低复位和高复位在同一工程中一定要吻合。

序列容器

序列容器 序列容器以线性序列的方式存储元素。它没有对元素进行排序,元素的顺序和存储它们的顺序相同。5 种标准的序列容器,每种容器都具有不同的特性:array<T,N> (数组容器) :长度固定的序列,有 N 个 T 类型的对象,不能增加或删除元素。 vector<T> (向量容器…

Antd-React-TreeSelect前端搜索过滤

Antd-React-TreeSelect前端搜索过滤,antd本事是带有搜索的功能,但是在开发过程中发现自带的搜索功能与我们要使用的搜索过滤还是差了好多,在一些时候搜索为了迎合需要不得不这么操作,那么该操作结合了antd官方的搜索操作,因而在看了网上的一些操作后还是与需求不符合,最后…

方法的三种调用形式

在《可以调用Null的实例方法吗?》一文中,我谈到.NET方法的三种调用形式,现在我们就来着重聊聊这个话题。具体来说,这里所谓的三种方法调用形式对应着三种IL指令:Call、CallVirt和Calli。在《可以调用Null的实例方法吗?》一文中,我谈到.NET方法的三种调用形式,现在我们就…

关于隐藏Selenium绕过检测

. 浏览器指纹识别:网站通常通过浏览器指纹识别来检测访问者的身份。浏览器指纹是浏览器在访问网站时提供的一组信息,包括浏览器类型、版本、插件、用户代理字符串、屏幕分辨率、语言设置、操作系统等。 当你使用 Selenium 或其他自动化工具时,某些指纹信息可能会暴露自动化工…

依赖倒置原则

一、前言 依赖倒置原则也称依赖倒转原则(Dependence Inversion Principle) 看官方定义 高层模块不应该依赖底层模块,二者都应该依赖其抽象 抽象不应该依赖细节,细节应该依赖抽象 依赖倒置的中心思想是面向接口编程 如果你了解点设计模式,应该理解上面的话,但是如果不了解…

常见温升测试方法

常见温升测试方法 温升测试是电器产品安规测试项目之一,是为了检测电器产品及部件的温度变化情况,判断是否符合要求。在设备运行过程中会释放一定的热量,如果内部温度过高会影响产品的性能和稳定性,导致绝缘性能下降,因此温升测试是确保产品稳定运行的重要步骤。那么如何进…