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

ubuntu24.04lts cmake编译 opencv4.5.4 contrib的一些问题

编译之前一定要安装好必须的库,否则即使提示编译成功,调用opencv后也可能会有问题

 
sudo apt-get update
sudo apt-get upgradesudo apt-get install -y g++            
sudo apt-get install -y cmake
sudo apt-get install -y make
sudo apt-get install -y wget 
sudo apt-get install -y unzip
sudo apt-get install -y gitsudo apt-get install build-essential pkg-config sudo apt-get install libgtk2.0-dev libgtk-3-dev libglib2.0-dev libavcodec-dev libavformat-dev libswscale-dev libavutil-dev libv4l-dev liblapacke-dev libxvidcore-dev libx264-devsudo apt-get install python-dev python-numpysudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-devsudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper1 libjasper-dev libdc1394-22-dev libopenexr-dev libwebp-devsudo apt-get install libatlas-base-dev gfortran sudo apt-get install ffmpeg

下载opencv4.5.4源码和opencv_contrib4.5.4后如下存放

 

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=/home/mwj/open4.5.4/opencv-4.5.4/opencv_contrib-4.5.4/modules ..

CMAKE_INSTALL_PREFIX 参数没有设置,从编译生成结果来看默认是放在了/usr/local下面

下次考虑设置成

-D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.5.4

那么命令应该是这个样子,如果编译多个版本的opencv,生成后就不会乱了

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.5.4 -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=/home/mwj/open4.5.4/opencv-4.5.4/opencv_contrib-4.5.4/modules ..

如果cmake没有错误,那么接下来(-j6的6表示cpu核心数)

sudo make -j6

如果这一步也没有出错,那继续以下命令

sudo make install

到这一步还不能直接在vscode中调用opencv

打开命令窗口

sudo gedit /etc/ld.so.conf

打开文件后在最后一行增加

include /usr/local/lib

遇到

问题1:typed_graph.hpp:106:53: error: ‘m_srcGraph’ was not declared in this scope

问题2:OpenCV Error:If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config,then re-run cmake

The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage'

sudo apt-get install libgtk2.0-dev

安装好这2个依赖之后,重新编译,生成

问题3:图片能出来但有个提示【Failed to load module "canberra-gtk-module" 】,这个安装后,重新运行就可以了

sudo apt-get install libcanberra-gtk-module

问题4:各种文件不能下载(常用的解决方法是科学上网,有时还不能下载,只能手动下载放在对应文件夹中了,有时迅雷 idm都很有用)

 参考网上的说法hosts文件中可以设置一下:

cmakez中需要下载的文件都来源于https://raw.githubusercontent.com这个网站,但是这个网站被墙了,所以会下载失败,我试过开代理,但是没有用。找个查ip的网站,查到https://raw.githubusercontent.com的ip,有四个,全部添加到/etc/hosts文件后面,格式如下:

185.199.108.133 中要去查询的

这个可以通过下面网站查询:
What Is My IP Address? Free IP Lookup
http://whoissoft.com/
Dns检测|Dns查询 - 站长工具

    185.199.108.133 raw.githubusercontent.com185.199.109.133 raw.githubusercontent.com185.199.110.133 raw.githubusercontent.com185.199.111.133 raw.githubusercontent.com

----------问题都解决之后可以测试下效果----------------
 

vscode中.vscode配置

c_cpp_properties.json

{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/usr/local/include/opencv4"],"defines": [],"compilerPath": "/usr/bin/gcc","cStandard": "gnu11","cppStandard": "gnu++14","intelliSenseMode": "linux-gcc-x64"}],"version": 4
}

launch.json

{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "g++ - Build and debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}",  //程序文件路径"args": [],  //程序运行需传入的参数"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": true,   //运行时是否显示控制台窗口"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "C/C++: g++ build active file","miDebuggerPath": "/usr/bin/gdb"}]
}

 tasks.json

{"tasks": [{"type": "cppbuild","label": "C/C++: g++ build active file",  /* 与launch.json文件里的preLaunchTask的内容保持一致 */"command": "/usr/bin/g++","args": ["-std=c++11","-g",//"${file}",   /* 编译单个文件 */"${fileDirname}/*.cpp",  /* 编译多个文件 */"-o","${fileDirname}/${fileBasenameNoExtension}",  /* 输出文件路径 *//* 项目所需的头文件路径 */"-I","${workspaceFolder}/","-I","/usr/local/include/","-I","/usr/local/include/opencv4/","-I","/usr/local/include/opencv4/opencv2",/* 项目所需的库文件路径 */"-L", "/usr/local/lib",/* OpenCV的lib库 */"/usr/local/lib/libopencv_*"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "Task generated by Debugger."}],"version": "2.0.0"
}

 

找了一段代码测试

 #include <opencv2/opencv.hpp>#include <opencv2/xfeatures2d.hpp>//SIFT SURF#include<iostream>
#include<vector>constexpr auto path0 = "1.jpg";
constexpr auto path1 = "2.jpg";int main() {cv::Mat image0 = cv::imread(path0, 1);cv::Mat image1 = cv::imread(path1, 1);cv::imshow("image0", image0);cv::imshow("image1", image1);/*step1:特征检测器*/cv::Ptr<cv::xfeatures2d::SURF> detector;detector = cv::xfeatures2d::SURF::create(800);  //800为海塞矩阵阈值,越大越精准/*-----SURF----cv::Ptr<cv::xfeatures2d::SURF> detector;detector = cv::xfeatures2d::SURF::create(800);  //800为海塞矩阵阈值,越大越精准-----SIFT-----cv::Ptr<cv::xfeatures2d::SIFT> detector;detector = cv::xfeatures2d::SIFT::create(800);//800为保留的点数-----ORB------cv::Ptr<cv::ORB> detector;detector  = cv::ORB::create(800);//保留点数-----STAR-----cv::Ptr<cv::xfeatures2d::StarDetector> detector;detector = cv::xfeatures2d::StarDetector::create();-----MSD-----cv::Ptr<cv::xfeatures2d::MSDDetector> detector;detector = cv::xfeatures2d::MSDDetector::create();*/std::vector <cv::KeyPoint > key0;std::vector <cv::KeyPoint > key1;detector->detect(image0,key0,cv::noArray());detector->detect(image1, key1, cv::noArray());/*step2:描述子提取器*/cv::Ptr<cv::xfeatures2d::SURF> Extractor;Extractor = cv::xfeatures2d::SURF::create(800);/*以下都是xfeature2d中的提取器-----SURF----------SIFT----------LUCID---------BriefDescriptorExtractor---------VGG----------BoostDesc-----*/cv::Mat descriptor0, descriptor1;Extractor->compute(image0, key0, descriptor0);Extractor->compute(image1, key1, descriptor1);/*step3:匹配器*/cv::BFMatcher matcher;//暴力匹配器std::vector<cv::DMatch> matches; // 存放匹配结果std::vector<cv::DMatch> good_matches; //存放好的匹配结果matcher.match(descriptor0, descriptor1, matches);             std::sort(matches.begin(), matches.end());     //筛选匹配点,根据match里面特征对的距离从小到大排序int ptsPairs = std::min(50, (int)(matches.size() * 0.15));std::cout << "匹配点数为" << ptsPairs << std::endl;for (int i = 0; i < ptsPairs; i++){good_matches.push_back(matches[i]);              //距离最小的50个压入新的DMatch}cv::Mat result;cv::drawMatches(image0, key0,image1, key1,good_matches, result,cv::Scalar::all(-1), cv::Scalar::all(-1),std::vector<char>(),cv::DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS);  //绘制匹配点  cv::imshow("result", result);cv::waitKey(0);
}

效果图:

相关文章:

ubuntu24.04lts cmake编译 opencv4.5.4 contrib的一些问题

编译之前一定要安装好必须的库&#xff0c;否则即使提示编译成功&#xff0c;调用opencv后也可能会有问题 sudo apt-get update sudo apt-get upgradesudo apt-get install -y g sudo apt-get install -y cmake sudo apt-get install -y make sudo apt-get install…...

大数据面试SQL(三):每分钟在线直播人数

文章目录 每分钟在线直播人数 一、题目 二、分析 三、SQL实战 四、样例数据参考 每分钟在线直播人数 一、题目 有如下数据记录直播平台主播上播及下播时间&#xff0c;根据该数据计算出平台每分钟的在线直播人数。 这里用主播名称做统计&#xff0c;前提是主播名称唯一…...

python中执行mysql操作并将python脚本共享

mysql下载路径&#xff1a; ​​​​​​MySQL :: MySQL Community Downloads [root2 ~]# vim py001.py a3 b4 print(ab) print(a**2b**2) [root2 ~]# python py001.py 7 25 [root2 ~]# python3 >>> import random >>> random <module rando…...

HTTP、HTTPS、SOCKS5三种协议特点

在互联网通信中&#xff0c;HTTP、HTTPS和SOCKS5是三种至关重要的协议&#xff0c;它们各自具有独特的特点和应用场景。本文将详细探讨这三种协议的特点&#xff0c;帮助读者更好地理解它们在网络通信中的作用。 一、HTTP协议特点 HTTP&#xff08;Hypertext Transfer Protoc…...

在ubuntu、centos、openEuler安装Docker

目录 ubuntu、centos、openEuler安装Docker 1.在 Ubuntu 上安装 Docker 1. 1 更新软件包 1. 2 安装必要的依赖 1.3 添加 Docker 的 GPG 密钥 1.4 添加 Docker 仓库 1.5 更新软件包 1.6 安装 Docker 1.7 启动并启用 Docker 服务 1.8 验证安装 1.9 运行测试容器 1.10…...

公共命名空间的例子3

有这样一个句子 用x语言解释[12*3]。 在x语言中&#xff0c;不符合“先乘除后加减”&#xff0c;这个句子应该怎样解释呢&#xff1f; 第一步&#xff0c;进行词法分析&#xff0c;目的是识别出注释和字符串&#xff0c;其中可能包括任意符号&#xff0c;干扰编译过程。 第二步…...

【云存储】SDS软件定义存储,数据存储的类型与技术方案(块/文件/对象,Ceph、RBD等)

【云存储】SDS软件定义存储&#xff0c;数据存储的类型与技术方案&#xff08;块/文件/对象&#xff0c;Ceph、RBD等&#xff09; 文章目录 1、分布式存储架构&#xff08;软件定义存储SDS&#xff0c;超融合基础架构HCI&#xff09;2、存储类型&#xff08;块存储&#xff0c;…...

第31课 Scratch入门篇:小画家(舞台上画画)

小画家(舞台上画画) 故事背景: 在舞台上选择画笔和颜色,进行画画 程序原理: 这节课我们继续练习画笔功能,通过画笔功能我们设计一个小画板,碰到哪种颜色画笔就切换成哪种颜色。 开始编程 1、绘制一大一小的黑色圆形,小的命名为画笔,大的圆形命名为black(黑色) 2、鼠…...

QT UI界面之ListView

文章目录 概述源码怎么用代码qt design 小结 概述 本来把布局文件那块写了一遍&#xff0c;但是看看都跟之前那篇差不多&#xff0c;就换了一个稍微有点难度的&#xff0c;也很常用的listview来写了。来看看&#xff0c;有什么好玩的。 源码 先看下源码&#xff0c;如下&…...

freeRTOS互斥量(mutex)

目录 前言 一、互斥量概述 二、互斥量函数 1.创建 2.其他函数 三、优先级反转示例 1.概念 2.代码示例 四、优先级继承 1.概念 2.代码示例 五、递归锁 1.死锁的概念 2.自我死锁 3.函数 4.递归锁代码示例 前言 在之前的信号量中&#xff0c;我们想要实现互斥的…...

基于GeoTools使用JavaFx进行矢量数据可视化实战

目录 前言 一、JavaFx展示原理说明 二、GeoTools的Maven依赖问题 三、引入Geotools相关的资源包 四、创建JavaFx的Canvas实例 五、JavaFx的Scene和Node的绑定 六、总结 前言 众所周知&#xff0c;JavaFx是Java继Swing之后的又一款用于桌面应用的开发利器。当然&#xff0…...

zabbix的setup无法进入第二步

注意-部署时&#xff0c;报错要看的日志不止一个&#xff0c;php日志的报错也要看的&#xff0c;nginx接收到请求后是转发到php-fpm的 [rootweb01-84-41 ~]# chmod -R 777 /var/lib/php/session chmod: 无法访问"/var/lib/php/session": 没有那个文件或目录 [rootweb…...

代码随想录算法训练营第四十六天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结篇

一、115. 不同的子序列 题目链接&#xff1a;115. 不同的子序列 - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 (programmercarl.com)——115. 不同的子序列 视频讲解&#xff1a;动态规划之子序列&#xff0c;为了编辑距离做铺垫 | LeetCode&#x…...

宝塔安装nginx失败报错“检测到系统组件wget不存在,无法继续安装”

宝塔安装nginx失败报错“检测到系统组件wget不存在&#xff0c;无法继续安装” 问题描述解决方案 问题描述 在宝塔中安装lnmp环境时&#xff0c;安装nginx失败报错&#xff1a;检测到系统组件wget不存在&#xff0c;无法继续安装 如下图所示 通过检查发现系统是已经安装了wge…...

C++之运算符重载系列深入学习:从入门到精通!

为什么需要对运算符进行重载 C预定义中的运算符的操作对象只局限于基本的内置数据类型&#xff0c;但是对于我们自定义的类型是没有办法操作的。但是大多时候我们需要对我们定义的类型进行类似的运算&#xff0c;这个时候就需要我们对这么运算符进行重新定义&#xff0c;赋予其…...

国赛分析。。。。

山东 6散落2两元素 浙江 8散落两元素 安徽不公布 4散落2元素 120s 华南 8散落两元素 西部 8散落两元素 华北 8 2.。。。 华东 东北 路边6张两元素...

无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案

无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案 1.Dify 简介 1.1 功能情况 Dify,一款引领未来的开源大语言模型(LLM)应用开发平台,革新性地融合了后端即服务(Backend as a Service,BaaS)与LLMOps的精髓,为开发者铺…...

PLSQL导入导出ORACLE数据提示失败问题修改PLSQL配置

oracle中plsql导入提示无法导入问题 1.首先看下是否环境变量已经配置(具体配置看下面环境变量配置) 2.plsql数据导入中tools-->Preferences中配置如下框中的内容 3.设置 tnsnames.ora文件中看下是否设置有问题 4.PLSQL乱码问题 NLS_LANG SIMPLIFIED CHINESE_CHINA.ZHS16…...

从Shift+F6到雪花算法:IDEA开发中的那些坑与解法

在日常开发中&#xff0c;提升代码质量和开发效率是每个开发者追求的目标。作为 Java 开发者常用的集成开发环境&#xff0c;IntelliJ IDEA 提供了丰富的功能与快捷键&#xff0c;帮助我们更快速、更高效地完成日常工作。然而&#xff0c;即便是如此强大的工具&#xff0c;也会…...

Linux知识点总结

学习目标 常见的快捷键 Linux 是一个开源的类 Unix 操作系统&#xff0c;广泛应用于服务器、桌面和嵌入式系统。以下是一些重要的 Linux 知识点总结&#xff1a; 基础概念 文件系统&#xff1a;Linux 使用层次化的文件系统结构&#xff0c;根目录为 /&#xff0c;其他目录如 …...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...