首页 > 编程语言 >opencv源码编译

opencv源码编译

时间:2024-08-02 10:10:44浏览次数:18  
标签:编译 get sudo dev opencv 源码 apt

编译环境:
ubuntu 24.04 LTS

gcc (Ubuntu 13.2.0-23ubuntu4) 13.2.0

g++ (Ubuntu 13.2.0-23ubuntu4) 13.2.0

cmake version 3.28.3

 

在Ubuntu下编译OpenCV源码是一个相对直接的过程,但需要注意一些依赖项和配置选项。以下是一个基本的步骤指南,用于从源代码编译OpenCV。

1. 安装必要的依赖项

首先,你需要安装编译OpenCV所需的依赖项。打开一个终端窗口,并输入以下命令来安装这些依赖项:

sudo apt-get update  
sudo apt-get install build-essential cmake pkg-config  
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev  
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev  
sudo apt-get install libxvidcore-dev libx264-dev  
sudo apt-get install libgtk2.0-dev libgtk-3-dev  
sudo apt-get install libatlas-base-dev gfortran  
sudo apt-get install python3-dev python3-numpy  
sudo apt-get install libtbb2 libtbb-dev libdc1394-22-dev  
sudo apt-get install libopencv-dev

注意:libopencv-dev 通常不是必需的,因为我们将从源代码编译OpenCV,但这个包包含了一些编译时可能需要的头文件和库文件。

 

2. 下载OpenCV源码

你可以从OpenCV的官方网站(https://opencv.org/releases/)下载最新版本的源代码,或者使用git克隆仓库:

git clone https://github.com/opencv/opencv.git  
cd opencv  
git checkout [特定版本标签,例如4.5.3]  
  
# 如果你还想编译opencv_contrib模块(包含额外的算法),请继续:  
cd ..  
git clone https://github.com/opencv/opencv_contrib.git  
cd opencv_contrib  
git checkout [与opencv相同的版本标签]

3. 创建构建目录并配置CMake

cd opencv  
mkdir build  
cd build  
  
# 配置CMake(如果需要opencv_contrib模块,请添加-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules)  
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..  
# 或者,如果你下载了opencv_contrib  
# cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ..  
  
# 查看配置选项(可选)  
cmake-gui .

4. 编译和安装

make -j$(nproc)  # 使用所有可用的CPU核心来加速编译  
sudo make install  
sudo ldconfig    # 更新系统的共享库缓存

5. 验证安装

安装完成后,你可以通过编译并运行一个简单的OpenCV程序来验证安装是否成功。例如,创建一个名为test.cpp的文件,并输入以下代码:

#include <opencv2/opencv.hpp>  
#include <iostream>  
  
int main() {  
    cv::Mat image = cv::imread("path_to_your_image.jpg");  
    if (image.empty()) {  
        std::cerr << "Could not read the image" << std::endl;  
        return 1;  
    }  
    cv::imshow("Display window", image);  
    int k = cv::waitKey(0);  
    return 0;  
}

然后,编译并运行它:

g++ test.cpp -o test_opencv `pkg-config --cflags --libs opencv4`  
./test_opencv

 

确保将 "path_to_your_image.jpg" 替换为有效的图像文件路径。如果一切设置正确,你将看到一个显示该图像的窗口。

注意

  • 如果你使用的是Python或其他编程语言,请确保你的环境配置正确,以便能够找到并加载OpenCV库。
  • 上述步骤中的pkg-config --cflags --libs opencv4可能需要根据你的OpenCV安装路径和版本进行调整。例如,如果你使用的是OpenCV 3.x,可能需要将opencv4替换为opencv。如果系统无法找到pkg-config命令,你可能需要安装它或使用CMake生成的Makefile直接编译你的程序。

 

标签:编译,get,sudo,dev,opencv,源码,apt
From: https://www.cnblogs.com/music-liang/p/18338094

相关文章

  • 转转交易猫自带客服多模板全开源完整定制版源码
    转转交易猫自带客服多模板全开源完整定制版源码。请在后台商品添加成功后,再点击该商品管理,可重新编辑当前商品的所有信息及配图以及支付等等相关信息可点击分享或者跳转,将链接地址进行发布分享请在手机端打开访问访问商品主要模板文件路径目录咸鱼;http://你的域名地址/Xia......
  • Windows下下载编译boost库
    下载boost库链接:https://www.boost.org/下载最新的版本即可,因为最新的版本是兼容以前版本的。编译boost库下载后解压如果没有b2.exe就先双击一下booststrap.bat自动生成文件。然后在此目录打开cmd;执行命令:.\b2.exeinstall--toolset=msvc-14.3--build-type=complete--......
  • Java编译和运行的命令
    1.3Java编译和运行的命令目录1.3Java编译和运行的命令1.3.1Java编译和运行的基础概念1.3.2基本步骤1.编译Java代码2.运行编译后的代码1.3.3详细解释1.3.4常见问题1.3.5常用Java命令javacjavajar1.3.1Java编译和运行的基础概念源代码文件(.java):这是你写的Java代......
  • Gromacs-2024.1 GPU版本编译,--以RockyLinux系统为例
    1、首先安装好gcc套件、gcc-toolset-9、cmake、nvidia_driver、cuda、openmpi等软件;2、解压gromacs的源码包;3、编译:a.节点内并行多线程版本,首先sclenablegcc-toolset-9bash加载gcc9以支持C++17特性,cdgromacs-2024.2&&mkdirbuild&&cmake…/-DGMX_BUILD_OWN_FF......
  • VSCode编译运行和调试C++
    VSCode编译运行和调试C++欢迎关注我的B站:https://space.bilibili.com/379384819欢迎交流学习,vx:18074116692参考教程:详解Linux下使用vscode编译运行和调试C/C++-知乎(zhihu.com)vscode是文本编辑而非集成开发环境,需要经过配置才能在其上编译执行代码。本教程将介绍如下内容......
  • RocketMq 拉取数据流程源码分析
    从一个问题开始1、一个boker,一个主题,两个队列,一个消费者组,一个消费节点,此时两个队列是落在一个消费节点上,请问这个消费节点是如何拉取数据的?需要明确关键对象之间的关系。关键对象有:1、RebalancePushImpl---》队列经过相关负载均衡算法,最终哪些队列落在当前节点上2、DefaultM......
  • Cool Request重大更新:可以统计任意方法耗时【送源码】
    什么是CoolRequestCoolRequest是一个IDEA中的接口调试插件,除了可以发起基本的HTTP请求之外,还提供了强大的反射调用能力,可以绕过拦截器,这点广受网友的好评,当然伴随着还有Spring中对@Scheduled注解的调用,以及xxl-job的支持,这是不是很酷(Cool)?什么是Trace我怀着一颗激动的心......
  • 大文件上传最全方案!!【送源码】
    文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。那有没有比较好的......
  • 基于SpringBoot+Vue+uniapp的横向课题信息管理系统的详细设计和实现(源码+lw+部署文档
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于Python+Django协同过滤算法的招聘信息推荐系统设计与实现(源码+数据库+讲解)
    文章目录前言详细视频演示项目运行截图技术框架后端采用Django框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......