【opencv】centos下opencv的编译(带opencv_contrib扩展包)

news2025/2/1 12:06:33

目录

  • 1.安装cmake
  • 2.opencv安装文件准备
  • 可选安装
  • 3.进行编译
  • 4.进行安装
  • 5.使用测试

编译步骤:

1.安装cmake

安装wget:

应该已安装gcc工具套组:

yum install sudo
yum install -y gcc gcc-c++ make automake 
yum install -y wget
wget https://cmake.org/files/v3.6/cmake-3.6.2.tar.gz
tar -zxvf cmake-3.6.2.tar.gz
cd cmake-3.6.2
./bootstrap && make -j4 && sudo make install

cmake安装完成。

2.opencv安装文件准备

git clone https://github.com/Itseez/opencv.git
git clone https://github.com/Itseez/opencv_contrib.git
在gitgub上下载opencv及其扩展包,注意,两者tag版本应对齐
在这里插入图片描述
将 opencv_contrib 文件夹移至 opencv 文件夹下
将整理好的文件夹传送至用于编译的远程服务器上:
事先新建好opencvBuild文件夹。

//如果上传及下载的是文件夹,需要加入-r,代表递归操作,将前地址内容转移至后地址
csp -P 10008 -r ‪D:\AI\opencv-4.x root@192.168.21.71:/home/opencvBuild

这里由于用的是vscode远程功能,所以直接传了。
创建一个编译目录:

cd opencv-4.x
mkdir build
cd build

再创建一个编译好后的安装目录:

mkdir /usr/local/opencv

下面安装opencv安装前需要安装的依赖(重要):
有些包找不到也能正常使用

sudo yum -y install epel-release
sudo yum -y install gtk2-devel
sudo yum install -y libpng-devel
sudo yum install -y jasper-devel
sudo yum install -y openexr-devel
sudo yum install -y libwebp-devel
sudo yum -y install libjpeg-turbo-devel 
sudo yum -y install libtiff-devel 
sudo yum -y install tbb-devel eigen3-devel
sudo yum -y install boost boost-thread boost-devel
sudo yum -y install libv4l-devel

可选安装

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

根据官网要求,输入cmake命令:这里使用-D对编译器进行设置

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv -D WITH_TBB=ON -D WITH_CUDA=ON -D OPENCV_GENERATE_PKGCONFIG=YES -D BUILD_SHARED_LIBS=ON -D WITH_OPENMP=ON -D ENABLE_PRECOMPILED_HEADERS=OFF -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=/home/opencvBuild/opencv-4.x/opencv_contrib-4.x/opencv_contrib-4.x/modules【这里改为源码中的 /opencv/opencv_contrib/modules 位置】 ../opencv-4.x 【最后跟的是源码目录】

3.进行编译

sudo make -j8

在这里插入图片描述

4.进行安装

sudo make install

安装完成。

5.使用测试

编写调用opencv的cpp文件,并用cmakelist进行编译:
c++文件


#include <iostream>
#include <opencv2/opencv.hpp>

using namespace cv;
int main()
{
	Mat mat = imread("/root/opencvtest/pic.png");
	if (mat.empty())
	{
		printf("could not load image...\n");
		return -1;
	}
    std::cout << "Hello World!\n";
}

添加对应的cmakelist:

#设置CMAKE最`在这里插入代码片`低版本
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3)
MESSAGE(STATUS "start!")
#设置项目名称
SET(PROJECT_NAME OpenCV_test)
#这里添加刚刚安装的opencv的目录,需要包含OpenCVConfig.cmake
SET(OpenCV_DIR /usr/local/opencv/lib64/cmake/opencv4)
#建立项目
PROJECT(${PROJECT_NAME})
#寻找OpenCV库
FIND_PACKAGE(OpenCV REQUIRED)
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
#打印调试信息
MESSAGE(STATUS "Project: ${PROJECT_NAME}")
MESSAGE(STATUS "OpenCV library status:")
MESSAGE(STATUS "    version: ${OpenCV_VERSION}")
MESSAGE(STATUS "    libraries: ${OpenCV_LIBS}")
MESSAGE(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

#获取代码,在项目中,将所有代码都放在src文件夹中
AUX_SOURCE_DIRECTORY(. DIR_SRCS)
MESSAGE(STATUS "Src file: ${DIR_SRCS}")
#编译可执行程序
ADD_EXECUTABLE(${PROJECT_NAME} ${DIR_SRCS})
#添加链接库
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS})

运行命令:

cmake .
make 

//运行程序:

./OpenCV_test

输出结果:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【树莓派不吃灰】兄弟连篇④ Shell编程

目录1、Shell基础1.1 脚本执行方式1.1.1 echo1.1.2 脚本执行1.2 Bash基本功能1.2.1 history1.2.2 命令补全1.2.3 命令别名1.2.4 常用快捷键1.2.5 输出输入重定向1.2.6 多命令顺序执行与管道符1.2.7 通配符和特殊符号1.3 Bash变量1.3.1 用户自定义变量1.3.2 环境变量1.3.3 位置变…

Hudi入门到实战

简介 Apache Hudi&#xff08;Hadoop Upserts Delete and Incremental&#xff09;是下一代流数据湖平台。Apache Hudi将核心仓库和数据库功能直接引入数据湖。Hudi提供了表、事务、高效的upserts/delete、高级索引、流摄取服务、数据集群/压缩优化和并发&#xff0c;同时保持…

用于医学诊断的菁染料ICG-Sulfo-OSu,活性基团修饰ICG

英文名&#xff1a;ICG-Sulfo-EG4-OSu 激发波长: 780nm; 发射波长: 800nm 分子量: 1777.36 溶剂:DMSO 凯新生物描述&#xff1a; (ICG)是一种用于医学诊断的菁染料。它用于测定心输出量、肝功能和肝脏血流量&#xff0c;以及用于眼科血管造影。它的峰值光谱吸收接近800纳米…

【课程整理】随机系统期末整理

文章目录1 概率论部分 (1-4)概率空间随机变量概率分布随机变量的函数仍然是随机变量条件期望2 随机过程 (5-7)随机过程Martingale停时马尔科夫链3 参数估计 (8-10)参数估计问题充分统计量贝叶斯估计非随机估计部分思维导图如下&#xff0c;私信发送html完整版 1 概率论部分 (1-…

3.path路径模块

目录 1 路径问题 2 直接给绝对路径 3 用 __dirname 表示绝对路径 4 path模块常用方法 4.1 路径拼接 path.join() 4.2 从路径字符串中解析出文件名 path.basename() 4.3 获取路径中的扩展名 path.extname() 1 路径问题 当我们使用 ./ 或是 ../ 表示相对路径的时…

小林Coding阅读笔记:操作系统篇之硬件结构,中断问题

前言 参考/导流&#xff1a; 小林coding - 2.6 什么是软中断&#xff1f;学习意义 学习CPU与外设如何去提升处理效率的设计思想&#xff0c;异步机制的理解与借鉴掌握相关的Linux命令&#xff0c;帮助问题排查 相关说明 该篇博文是个人阅读的重要梳理&#xff0c;仅做简单参…

【修饰性PEG供应商】mPEG-DBCO_DBCO mPEG_甲氧基聚乙二醇环辛炔

【产品描述】 西安凯新生物科技有限公司是国内业PEG供应商&#xff0c;可以提供不同分子量的PEG衍生物&#xff0c;小分子PEG的循环节可以做到1-36个&#xff0c;高分子PEG分子量从1000-40000不等&#xff0c;可以修饰的基团有&#xff1a;氨基类&#xff0c;NHBOC类&#xff0…

多层板PCB设计中电源平面相对地平面为什么要进行内缩

大家是否观察过&#xff0c;有一些人绘制的PCB&#xff0c;在GND层和电源层会进行一定程度的内缩设计&#xff0c;那么大家有没有想过为什么要内缩呢。需要搞清楚这个问题&#xff0c;我们需要来先了解一个知识点&#xff0c;那就是“20H”原则&#xff1a; 20H原则主要是为了减…

MySQL的数据结构

阅读目录MySQL 数据结构用 btree 做的为什么不用红黑树叉树呢&#xff1f;什么是 B-Tree&#xff08;B-树&#xff09;&#xff1f;什么是 BTree&#xff1f;BTree 相对于 B-Tree 的几点不同MySQL 数据结构用 btree 做的 为什么不用红黑树叉树呢&#xff1f; 不用红黑树是因为…

计算机3D数学基础 旋转的三种表示方法 学习笔记

旋转的三种表示方法&#xff1a;1、矩阵 2、欧拉角 3、四元数 矩阵的缺点&#xff0c;记录旋转角度要记录9个数 欧拉角的heading就是绕着y(绿色轴)轴30 &#xff0c;容易理解 三种旋转方式的优缺点&#xff1a; 矩阵&#xff1a;缺点&#xff1a;1、上手难&#xff0c;记…

Android常用布局总结之(LinearLayout、TableLayout、GridLayout、RelativeLayout)

一、LinearLayout 线性布局 LinearLayout 是一个视图组&#xff0c;用于使所有子视图在单个方向&#xff08;垂直或水平&#xff09;保持对齐。您可以使用 android:orientation 属性指定布局方向。 android:orientation&#xff0c;指定布局方向&#xff0c;vertical-竖向布局…

在线点餐网站

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 管理员&#xff1a; 1、管理门店介绍、联系我们 2、对公告类型、公告信息增删改查 3、对菜品类型、菜品信息增册改查 4…

【计算机考研408】2023考研408相关题目预测总结

目录数据结构选择1-时间复杂度选择2-栈或者队列选择3-二叉树、树、森林选择4-并查集选择5-红黑树选择6-图的概念选择7-图的应用选择8-B树&#xff08;B-树&#xff09;选择8-B树选择8-B树与B树的区别选择8-B树与B树的相关应用选择9-查找算法选择10、11-排序算法综合应用题41-算…

UG/NX二次开发Siemens官方NXOPEN实例解析—2.3 Selection_UIStyler

列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析—2.1 AssemblyViewer UG/NX二次开发Siemens官方NXOPEN实例解析—2.2 Selection UG/NX二次开发Siemens官方NXOPEN实例解析—2.3 Selection_UIStyler 列文章目录 文章目录 前言 一、知识点提取 二、案例需求分析 三、…

大数据期末总结

文章目录一、这学期分别接触了Linux&#xff0c;hadoop&#xff0c;hbase&#xff0c;hive1、Linux2、Hadoop3、hbase4、hive二、总结一、这学期分别接触了Linux&#xff0c;hadoop&#xff0c;hbase&#xff0c;hive 1、Linux Linux是一款安全性十分良好的操作系统。不仅有用…

前端监控与前端埋点方案

前端监控与前端埋点方案 https://blog.csdn.net/sinat_36521655/article/details/114650138 ​ 用户行为数据可以通过前端数据监控的方式获得&#xff0c;除此之外&#xff0c;前端还需要实现**性能监控和异常监控。**性能监控包括首屏加载时间、白屏时间、http请求时间和htt…

软件设计师

1.在项目初期的需求并不明确&#xff0c;需要不断同用户进行交流与沟通&#xff0c;分布获取功能要求&#xff0c;在这种情况要采用敏捷开发方法最适合&#xff0c;比如极限编程 2.设计模式包括&#xff1a;创建型&#xff0c;结构型&#xff0c;行为型三大类别。 创建型模式…

UnRaid添加镜像源加速应用安装的正确方法

文章目录0、前言1、寻找适合你网络的最优镜像源1.1、首先点击下图示红框处进入UnRaid的终端1.2、输入如下代码检测每一个镜像源的速度&#xff1a;2、更改镜像源方法2.1、修改Go文件方法2.2、用户自定义脚本方式2.2.1、安装User Scripts插件2.2.2、在User Scripts插件中添加更改…

【自动驾驶环境感知项目】——基于Paddle3D的点云障碍物检测

文章目录1. 自动驾驶实战&#xff1a;基于Paddle3D的点云障碍物检测1.1 环境信息1.2 准备点云数据1.3 安装Paddle3D1.4 模型训练1.5 模型评估1.6 模型导出1.7 模型部署效果1. 自动驾驶实战&#xff1a;基于Paddle3D的点云障碍物检测 项目地址——自动驾驶实战&#xff1a;基于P…

已经拍好的视频怎么加水印?视频加水印方法大分享

现在不管是网课视频&#xff0c;还是一些视频博主自制的vlog&#xff0c;我们都可以在这些视频里面看到水印&#xff0c;它不仅可以防止他人盗用视频&#xff0c;还可以作为自己形象的宣传&#xff0c;吸引流量。不过现在还是有很多小伙伴不知道怎么给视频添加水印。别急&#…