当前位置: 首页 > article >正文

给视觉开发新手的保姆级教程:在Ubuntu上从下载源码到成功运行Demo,搞定OpenCV 3环境搭建

给视觉开发新手的保姆级教程在Ubuntu上从下载源码到成功运行Demo搞定OpenCV 3环境搭建第一次在Ubuntu上搭建OpenCV开发环境对很多视觉开发新手来说可能是个令人望而生畏的任务。命令行操作、编译工具链、环境配置……这些术语听起来就让人头疼。但别担心本文将手把手带你完成从源码下载到成功运行Demo的全过程即使你对Linux命令行和CMake完全陌生也能轻松跟上。我们将使用OpenCV 3.4.10版本这是目前3.x系列中最稳定且功能完善的版本之一。整个过程会特别关注那些容易让新手困惑的环节比如CMake-GUI的配置含义、编译错误的解决方法以及如何验证安装是否成功。最终你不仅能拥有一个可用的OpenCV开发环境还会理解整个工作流程背后的原理。1. 环境准备与源码获取在开始之前请确保你的Ubuntu 18.04系统已经更新到最新状态。打开终端快捷键CtrlAltT执行以下命令更新软件包列表和已安装的软件sudo apt update sudo apt upgrade -y接下来我们需要安装一些必要的依赖项。这些工具和库是编译OpenCV的基础sudo apt install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev对于Python用户还可以安装Python开发环境和相关包sudo apt install -y python3-dev python3-numpy现在让我们获取OpenCV 3.4.10及其contrib模块的源码。有两种方式可以下载使用wget命令行下载推荐wget -O opencv.zip https://codeload.github.com/opencv/opencv/zip/3.4.10 wget -O opencv_contrib.zip https://codeload.github.com/opencv/opencv_contrib/zip/3.4.10浏览器下载 直接在浏览器中打开以下链接下载zip包OpenCV主仓库https://github.com/opencv/opencv/archive/3.4.10.zipContrib模块https://github.com/opencv/opencv_contrib/archive/3.4.10.zip下载完成后解压文件并整理目录结构unzip opencv.zip unzip opencv_contrib.zip mv opencv-3.4.10 opencv mv opencv_contrib-3.4.10 opencv_contrib提示建议将这两个文件夹放在同一目录下比如你的主目录下的opencv_build文件夹中这样后续操作会更方便。2. 使用CMake-GUI配置OpenCVCMake是一个跨平台的构建系统生成器而CMake-GUI则提供了图形化界面让配置过程更加直观。如果你还没有安装CMake-GUI可以通过以下命令安装sudo apt install -y cmake-qt-gui现在创建一个构建目录并启动CMake-GUImkdir opencv/build cd opencv/build cmake-gui ..CMake-GUI界面打开后你会看到以下主要区域Where is the source code自动指向你解压的OpenCV源码目录Where to build the binaries自动指向你创建的build目录点击左下角的Configure按钮在弹出的对话框中选择Unix Makefiles然后点击Finish。CMake会开始检查系统环境和依赖项。配置过程中有几个关键选项需要特别注意BUILD_opencv_world勾选此选项会将所有OpenCV模块编译成一个单独的库文件简化链接过程。CMAKE_BUILD_TYPE设置为RELEASE以获得优化性能。OPENCV_EXTRA_MODULES_PATH指向contrib模块的路径通常是path/to/opencv_contrib/modules。完成这些设置后再次点击Configure按钮。如果没有错误点击Generate按钮生成Makefile。注意如果在配置过程中遇到与Anaconda相关的库冲突问题可以临时注释掉.bashrc文件中Anaconda的路径然后重新启动终端再试。3. 编译与安装OpenCV配置完成后就可以开始编译了。首先确定你的系统有多少个CPU核心以便并行编译加快速度nproc假设输出是8那么可以使用以下命令开始编译make -j8编译过程可能需要较长时间取决于你的硬件配置请耐心等待。如果一切顺利你会看到类似以下的输出[100%] Built target opencv_world [100%] Built target opencv_test_core编译完成后安装OpenCV到系统目录sudo make install为了让系统能够找到新安装的OpenCV库还需要配置动态链接器的路径sudo sh -c echo /usr/local/lib /etc/ld.so.conf.d/opencv.conf sudo ldconfig最后设置pkg-config环境变量这将帮助你在编译自己的程序时自动找到OpenCV的库和头文件echo export PKG_CONFIG_PATH$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig ~/.bashrc source ~/.bashrc4. 验证安装与编写第一个OpenCV程序安装完成后我们可以通过多种方式验证OpenCV是否正常工作。运行官方示例OpenCV自带了许多示例程序我们可以编译并运行其中一个cd ~/opencv/samples/cpp/example_cmake make ./opencv_example如果看到一个窗口显示OpenCV的logo说明安装成功。编写自己的测试程序让我们创建一个简单的程序来读取并显示一张图片。首先创建一个新目录并编写代码mkdir ~/opencv_test cd ~/opencv_test gedit display_image.cpp将以下代码粘贴到编辑器中#include opencv2/opencv.hpp #include iostream using namespace cv; using namespace std; int main(int argc, char** argv) { if (argc ! 2) { cout Usage: display_image Image_Path\n; return -1; } Mat image imread(argv[1], IMREAD_COLOR); if (image.empty()) { cout Could not open or find the image\n; return -1; } namedWindow(Display window, WINDOW_AUTOSIZE); imshow(Display window, image); waitKey(0); return 0; }保存后使用以下命令编译g display_image.cpp -o display_image pkg-config --cflags --libs opencv编译成功后找一张测试图片比如test.jpg运行程序./display_image test.jpg如果能看到图片正常显示恭喜你你已经成功搭建了OpenCV开发环境并运行了第一个程序。5. 常见问题与解决方案在OpenCV环境搭建过程中可能会遇到各种问题。以下是几个常见问题及其解决方法CMake找不到依赖项确保安装了所有必要的开发包使用apt search查找缺失的库有时需要手动指定库路径编译过程中内存不足减少并行编译线程数如使用make -j4代替make -j8增加系统交换空间运行时找不到库确认执行了sudo ldconfig检查/etc/ld.so.conf.d/中的配置文件确保.bashrc中的环境变量设置正确Python绑定问题确保Python开发包已安装检查CMake配置中的Python相关选项可能需要重新编译并指定Python版本提示遇到问题时可以尝试清理build目录并从头开始配置和编译。很多问题都能通过这种方式解决。6. 进阶配置与优化建议现在你已经有了一个可用的OpenCV环境下面是一些进阶建议可以帮助你更好地使用OpenCV进行开发使用CMake管理你的OpenCV项目对于你自己的项目建议使用CMake来管理构建过程。下面是一个简单的CMakeLists.txt示例cmake_minimum_required(VERSION 3.5) project(MyOpenCVProject) find_package(OpenCV REQUIRED) add_executable(display_image display_image.cpp) target_link_libraries(display_image ${OpenCV_LIBS})性能优化选项在编译OpenCV时可以通过以下选项优化性能ENABLE_AVX/ENABLE_AVX2启用CPU的AVX指令集加速WITH_OPENMP启用多线程支持WITH_TBB使用Intel TBB进行并行化文档与帮助OpenCV提供了完善的文档和社区支持官方文档https://docs.opencv.org/3.4.10/示例代码opencv/samples目录社区论坛https://answers.opencv.org/在实际项目中我发现使用pkg-config可以大大简化编译命令。例如当你需要同时链接多个库时pkg-config会自动处理依赖关系。另外建议定期查看OpenCV的更新日志了解新特性和性能改进。

相关文章:

给视觉开发新手的保姆级教程:在Ubuntu上从下载源码到成功运行Demo,搞定OpenCV 3环境搭建

给视觉开发新手的保姆级教程:在Ubuntu上从下载源码到成功运行Demo,搞定OpenCV 3环境搭建 第一次在Ubuntu上搭建OpenCV开发环境,对很多视觉开发新手来说可能是个令人望而生畏的任务。命令行操作、编译工具链、环境配置……这些术语听起来就让人…...

Markdown基础功能

原文:Markdown基础语法介绍 | Colin Gretzky的博客 本文介绍 Markdown 笔记格式的基础功能,涵盖核心语法和使用要点,适合初学者快速上手。 Markdown 简介 Markdown 是一种轻量级的标记语言,由 John Gruber 于 2004 年设计。它的核…...

Pixel-to-Space 像素到空间 一镜到底·跨镜连续技术解析方案

Pixel-to-Space 像素到空间 一镜到底跨镜连续技术解析方案一、技术总览1.1 核心定义Pixel-to-Space像素到空间,是一套自成体系的二维视频像素向三维物理空间实时反演的全域感知范式,跳出市面传统视频解析与空间重建的通用研发路线,形成专属化…...

通达信缠论分析插件:如何用开源工具实现智能技术分析

通达信缠论分析插件:如何用开源工具实现智能技术分析 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 缠论作为技术分析的重要理论体系,其复杂的线段划分和中枢识别让许多交易者望…...

AgentDock:构建可控AI智能体的开源框架与工程实践

1. 项目概述:构建可控的智能体应用框架如果你正在寻找一个既能利用大语言模型(LLM)的创造力,又能确保关键业务流程稳定可靠的开发框架,那么 AgentDock 的出现可能正合你意。我最近深度体验了这个开源项目,它…...

OAI 5G核心网搭建后,如何用Docker命令进行日常运维和故障排查?

OAI 5G核心网Docker运维实战:从日志分析到故障排查 当OAI 5G核心网完成基础部署后,真正的挑战才刚刚开始。面对由多个容器组成的复杂系统,如何快速定位AMF拒绝注册的原因?SMF的PDU会话建立失败该如何排查?本文将分享一…...

Python调用MATLAB引擎避坑指南:从安装路径选择到`setup.py` install命令的完整实战

Python调用MATLAB引擎避坑指南:从安装路径选择到setup.py install命令的完整实战 在科学计算和工程仿真领域,MATLAB和Python各有优势。许多开发者希望将两者结合使用,但安装MATLAB引擎到Python环境时常常遇到各种"玄学"问题。本文将…...

如何在3分钟内安装TrollStore?TrollInstallerX终极指南

如何在3分钟内安装TrollStore?TrollInstallerX终极指南 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾想过在不越狱的情况下自由安装iOS应用&#…...

别再死记硬背公式了!用“预测-更新”的贝叶斯视角,5分钟看懂卡尔曼滤波核心

卡尔曼滤波:用贝叶斯思维解决自动驾驶中的不确定性追踪问题 想象一下你正驾驶一辆特斯拉行驶在高速公路上,车载雷达显示前方100米处有一辆卡车。但下一秒雷达数据突然跳变到105米,而摄像头却显示距离是98米。作为人类司机,你会本能…...

PCL2启动器游戏启动失败的终极解决方案:3步快速修复指南

PCL2启动器游戏启动失败的终极解决方案:3步快速修复指南 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher(PCL)。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL Plain Craft Launcher 2(PCL2)…...

深度理解 C++ 继承与多态:从底层原理到实战技巧

目录 一、 继承:不仅是代码的复用 1.1 三种继承方式的差异 1.2 构造与析构的顺序(避坑指南) 二、 多态:让程序具备“生命力” 2.1 虚函数(Virtual Function) 2.2 核心代码示例 三、 深度思考&#x…...

RTKLIB2.4.3进阶:在VS2017中通过.conf与命令行参数高效驱动PPP数据处理

1. RTKLIB与PPP数据处理基础 RTKLIB作为开源GNSS数据处理工具链,在精密单点定位(PPP)领域有着广泛应用。2.4.3版本虽然发布较早,但其稳定性和功能完整性使其至今仍是许多高精度定位项目的首选。我在多个测绘项目中实测发现&#x…...

Perplexity学术模式尚未开放的4个隐藏功能(仅限IEEE Fellow级用户测试通道泄露)

更多请点击: https://intelliparadigm.com 第一章:Perplexity学术模式尚未开放的4个隐藏功能(仅限IEEE Fellow级用户测试通道泄露) 离线语义缓存预热接口 Perplexity 内部测试版暴露了 /v2/academic/cache/warmup 端点&#xff…...

别再复制粘贴了!手把手教你从零配置一个生产可用的log4j2.xml文件

从零构建生产级Log4j2配置:告别复制粘贴的五个关键设计 每次接手新项目时,看到团队直接从GitHub或博客复制过来的log4j2.xml文件,我都会暗自叹气。这些配置往往带着各种隐患:有的在高峰期突然打满磁盘,有的关键错误日志…...

AI写专著的技巧与工具:一键生成20万字专著,开启写作新体验!

学术著作的严谨性离不开丰富的资料和数据支撑,但资料的搜集和数据的整合恰恰是撰写过程中最繁琐且耗时的环节。进行研究的学者需要全面搜索国内外的最新文献,确保所选文献既权威又相关,并追溯到原始来源,避免出现二次引用的错误&a…...

2026年搜索引擎大变革:生成式优化解决方案引领新潮流

引言随着ChatGPT、Google AI概览等工具成为主流搜索界面,传统的SEO策略已难以适配新时代的挑战。生成式引擎优化(GEO)应运而生,成为企业在线上生存与优化的新选择。本文将探讨2026年SEO行业格局的变化,分析GEO的核心逻…...

【模拟CMOS集成电路】噪声分析实战指南——从模型到计算的完整路径

1. 噪声分析的必要性与基础概念 做模拟电路设计的朋友们应该都深有体会,噪声就像个甩不掉的影子,时时刻刻影响着我们的设计。记得我第一次做低噪声放大器时,仿真结果看起来很美,实测却发现信号完全被噪声淹没,那种挫败…...

反PUA30天 Day15:“你格局小“——当这句话出现时,通常意味着对方已经没有别的论据了 |乐想屋

“本文来自「乐想屋」公众号,系列更新[职场反PUA30天觉醒计][职场生存暗规则],每天一篇清醒认知,拒绝内耗,少踩坑,快速成长。”绩效沟通那天,leader跟我说了一句话:「你不要老盯着自己那一亩三分…...

艾尔登法环风灵月影修改器下载(已汉化)分享2026最新版

《艾尔登法环》以交界地为舞台,打造了一款兼具开放世界探索与高难度挑战的角色扮演游戏。玩家将扮演褪色者,在破碎的土地上冒险,挑战强大敌人、收集装备、提升能力,最终成为艾尔登之王。游戏以硬核战斗与开放探索为核心&#xff0…...

别再让FTP匿名登录成后门!手把手教你加固vsftpd服务(附CentOS 7实战配置)

企业级vsftpd安全加固实战指南:从匿名登录风险到全方位防护 FTP服务作为企业文件传输的经典解决方案,至今仍在许多组织的IT架构中扮演重要角色。然而,默认配置下的vsftpd服务往往隐藏着致命的安全隐患——匿名登录功能如同一扇未上锁的后门&a…...

ue5 血条 渲染方形的分辨率 血条缩放的问题

项目设置中将Resize PIE Window to Output Resolution直接搜索Resize PIE Window to Output Resolution勾选即可...

OpenClawWatch:本地优先的AI智能体监控工具,实现成本、安全与行为全链路追踪

1. 项目概述:为什么我们需要一个“本地优先”的AI智能体监控工具?如果你正在开发或运行能够自主执行任务的AI智能体,比如自动处理邮件、调用API、操作文件,甚至进行线上交易,那么你肯定经历过这样的焦虑时刻&#xff1…...

为什么92%的用户调不出正宗120胶片感?揭秘Midjourney底层色彩映射矩阵与胶片光谱响应偏差

更多请点击: https://intelliparadigm.com 第一章:胶片感的视觉本质与数字复现困境 胶片感并非单一参数可定义的视觉效果,而是由卤化银晶体随机分布、显影化学反应非线性响应、颗粒噪点的空间相关性以及动态范围压缩特性共同构成的模拟物理现…...

MediaCreationTool.bat:解决Windows安装媒体创建痛点的灵活工具

MediaCreationTool.bat:解决Windows安装媒体创建痛点的灵活工具 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat …...

Halo Cursor:轻量级框架无关的动画光标库设计与实践

1. 项目概述:一个轻量、无框架绑定的动画光标库最近在重构一个前端项目,想给用户界面增加一点微妙的动态反馈,提升交互的精致感。我第一个想到的就是自定义光标效果。市面上这类库不少,但要么体积臃肿,要么和特定框架&…...

Nucleus MCP:构建AI智能体标准化工具层的核心架构与实践

1. 项目概述:一个为AI智能体打造的“工具箱”中枢最近在折腾AI智能体(Agent)开发的朋友,可能都遇到过类似的困境:你有一个绝佳的想法,想让AI去调用某个API、查询数据库,或者操作一个本地工具。你…...

意法半导体权力交接:从博佐蒂到谢里的战略延续与挑战

1. 从Bozotti到Chery:一场静水深流的权力交接在半导体这个以技术迭代和资本狂热著称的行业里,权力更迭往往伴随着戏剧性的股价波动、战略急转弯或是人事地震。然而,2018年5月31日,当意法半导体(STMicroelectronics NV&…...

图解CA注意力机制:用Keras一步步拆解‘宽高分离池化’,理解位置信息如何嵌入通道注意力

图解CA注意力机制:用Keras拆解‘宽高分离池化’的视觉密码 当我们谈论注意力机制时,脑海中往往会浮现SE(Squeeze-and-Excitation)模块的通道加权画面。但今天要探讨的CA(Coordinate Attention)机制&#xf…...

D3KeyHelper:5个技巧让暗黑破坏神3操作效率翻倍的智能宏工具完全指南

D3KeyHelper:5个技巧让暗黑破坏神3操作效率翻倍的智能宏工具完全指南 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 你是否曾在《暗黑破…...

AgentStack:构建生产级AI智能体应用的一站式平台

1. 项目概述:AgentStack,一个为AI智能体打造的“操作系统”如果你正在开发AI应用,或者想让你的产品具备AI能力,那你一定遇到过这样的困境:大模型能力虽强,但让它稳定、可控、安全地接入你的业务系统&#x…...