opencv3特征检测的配置与使用

2023-11-17

 

  1. 官网下载opencv(for Linux)和opencv_contrib。opencv版本:3.4.1
  2. 编译安装。编译选项为: 
    cmake -D OPENCV_EXTRA_MODULES_PATH=<opencv_contrib_path>/modules
          -D CMAKE_BUILD_TYPE=Release 
          -D WITH_CUDA=ON 
          -D CMAKE_INSTALL_PREFIX=/usr/local ..

     

  3. 我遇到了CUDA相关的错误,然后参考这篇博文解决之。
  4. 构建工程时,CMakeLists.txt中添加
    include_directories("/usr/local/include/x86_opencv2/xfeatures2d")

    整体如下:

    cmake_minimum_required(VERSION 3.5)
    project(cvtest)
    
    set(CMAKE_CXX_STANDARD 11)
    
    include_directories("/usr/local/include/x86_opencv2/xfeatures2d")
    
    find_package(OpenCV REQUIRED)
    if (OPENCV_FOUND)
        message(STATUS "找到OpenCV: ${OpenCV_INCLUDE_DIRS}")
        message(STATUS "找到OpenCV: ${OpenCV_LIBS}")
        include_directories(${OpenCV_INCLUDE_DIRS})
    endif (OPENCV_FOUND)
    
    add_executable(cvtest cvtest.cpp)
    target_link_libraries(cvtest ${OpenCV_LIBS} )
  5. 源文件中包含nonfree.hpp,引用命名空间xfeatures2d。整体如下:
  6. 具体的opencv3中的特征检测用法,可以参考这篇博文

代码参考了毛星云的教程,感谢以上提及的共享资料。


//---------------------------------【头文件、命名空间包含部分】----------------------------
//		描述:包含程序所使用的头文件和命名空间
//------------------------------------------------------------------------------------------------
#include "opencv2/opencv.hpp"

#include <nonfree.hpp>
using namespace cv;
using namespace xfeatures2d;


//-----------------------------------【main( )函数】--------------------------------------------
//   描述:控制台应用程序的入口函数,我们的程序从这里开始执行
//-----------------------------------------------------------------------------------------------
int main( int argc, char** argv )
{
    //【1】载入源图片并显示
    Mat srcImage1 = imread("../1.jpg", 1 );
    Mat srcImage2 = imread("../2.jpg", 1 );
    if( !srcImage1.data || !srcImage2.data )//检测是否读取成功
    { printf("读取图片错误,请确定目录下是否有imread函数指定名称的图片存在~! \n"); return false; }
    imshow("src1",srcImage1);
    imshow("src2",srcImage2);

    //【2】定义需要用到的变量和类
    int minHessian = 400;//定义SURF中的hessian阈值特征点检测算子
    Ptr<SURF> detector = SURF::create(minHessian);
//    SurfFeatureDetector detector( minHessian );//定义一个SurfFeatureDetector(SURF) 特征检测类对象
    std::vector<KeyPoint> keypoints_1, keypoints_2;//vector模板类是能够存放任意类型的动态数组,能够增加和压缩数据

    //【3】调用detect函数检测出SURF特征关键点,保存在vector容器中
    detector->detect( srcImage1, keypoints_1 );
    detector->detect( srcImage2, keypoints_2 );

    //【4】绘制特征关键点.
    Mat img_keypoints_1; Mat img_keypoints_2;
    drawKeypoints( srcImage1, keypoints_1, img_keypoints_1, Scalar::all(-1), DrawMatchesFlags::DEFAULT );
    drawKeypoints( srcImage2, keypoints_2, img_keypoints_2, Scalar::all(-1), DrawMatchesFlags::DEFAULT );

    //【5】显示效果图
    imshow("dst 1", img_keypoints_1 );
    imshow("dst 2", img_keypoints_2 );

    waitKey(0);
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

opencv3特征检测的配置与使用 的相关文章

  • 用python 取得mysql随机一条记录的取巧办法

    网上有很多关于如何从数据库取得随机一条记录的办法 包括 SELECT RAND MAX id FROM random 还有据说是效率最低的办法 SELECT FROM foo ORDER BY RAND LIMIT 1 至于其他的方法 可以
  • 白盒测试方法-静态结构分析法

    程序的结构形式是白盒测试的主要依据 研究表明程序员38 的时间花费在理解软件系统上 因为代码以文本格式被写入多重文件中 这是很难阅读理解的 需要其它一些东西来帮助人们阅读理解 如各种图表等 而静态结构分析满足了这样的需求 在静态结构分析中
  • python 多线程,多进程问题

    近期在做一个计算很费时的项目 就想着通过多线程的方式进行加速 发现python的多线程无法实现加速 python中的多进程VS多线程 首先需要明白多线程和多进程的差异 简单来说一个进程下可以启多个线程 那么在python中 Python代码
  • Excel中VLOOKUP函数的简易填写指南

    VLOOKUP简介 VLOOKUP函数是Excel中的一个纵向查找函数 它与LOOKUP函数和HLOOKUP函数属于一类函数 在工作中都有广泛应用 例如可以用来核对数据 多个表格之间快速导入数据等函数功能 功能是按列查找 最终返回该列所需查
  • MATLAB批量重命名存储数据

    目录 文件查找 文件移动和改名 所调用函数功能 文件查找 首先确定数据存储的文件夹地址 记为folder dir 如果该文件夹不存在需要访问的子文件夹 则直接复制文件地址 如果存在需要访问的子文件夹 则要利用dir函数进行寻找 将子文件夹信
  • 3DSMAX平时建模软件不会卡死,到了渲图时,渲染图出来了,软件就卡死了的问题是系统自带的输入法更新了和软件不兼容

    3DSMAX平时建模软件不会卡死 到了渲图时 渲染图出来了 软件就卡死了的问题是系统自带的输入法更新了和软件不兼容
  • VSCode将一份代码同步到多台服务器的解决方案

    下载插件 首先去 VSCode 插件下载处输入 sftp 有三个 选择第二个 作者是 Natizyskunk 原版作者的仓库已经几年没维护了 有很多 bug 这个老外接手了这个插件并维护 配置config 按住 command shift
  • Unity enabled & Single(关闭组件和单例)

    1 先获取需要关闭的组件 2 在代码中用获取组件的变量点出enabled 单例 单例类 内存中只能有一个 实例化的时候一定要new calss Single 单例 private static Single instance 私人化构造函数
  • 小技巧(8):Word中自定义目录,并设置自动目录的格式

    文章目录 一 对正文中的目录设置大纲级别 1 1 通过样式设置标题级别 1 2 通过段落设置标题级别 二 设定自定义目录格式 2 1 生成自定义目录 2 2 设置显示大纲级别 2 3 设置不同级别目录的显示格式 一 对正文中的目录设置大纲级
  • opencv3+python3.5成语填字游戏(一)印刷体汉字的分割

    首先这是一个成语填字游戏 大概就是一张成语填字游戏图片 通过opencv图像识别后转为矩阵 再通过解算法 解出答案 在显示到图片上 源代码 https github com mayue801 crossword puzzle idiom 本
  • word中matlab的图片,转为pdf格式时失真如何解决?

    在matlab figure里面 Edit gt Copy Figure 粘贴到Word里 再转成PDF 会出现图片的标题 title 错位 解决 用adobe pdf 打印即可 不要另存为
  • Hexo一些实用的插件

    Hexo的插件真是个好东西 一开始部署博客的时候并没有太在意插件的问题 毕竟觉得博客主题自带的插件挺全面的 足够使用了 但是用久了总是会腻 就想着静态博客能不能整一些新操作 即使只是添加点小功能 于是就翻了翻 Hexo 的插件目录 挑了些比
  • 小技巧——宝塔面板重启、重置命令

    1 Centos 安装脚本 yum install y wget wget O install sh http download bt cn install install sh sh install sh 2 Ubuntu Deepin
  • chrome浏览器 下载网页视频的方法

    有时候 我们在网上浏览到一些制作的非常好视频 但是网页又不提供视频下载 怎么办呢 工具 Chrome浏览器 迅雷 这里我们以Chrome浏览器为例 其他浏览器同理 步骤 1 在视频播放页面 我们在空白处 单击右键出现下列菜单 点击 检查 或
  • Linux 下计算圆周率

    转自 http blog csdn net zhuying linux article details 7298465 oracle sor sys time echo scale 5000 4 a 1 bc l q 输出的是小数点后 位的
  • Java连接远程服务器debug

    日常我们debug是经常用的 但是本地还好说 远程debug就有点难度 而且有时候必须要在预演 测试环境的服务器去debug 举个例子 需要https 公网 域名之类的 测试服务器这些有些是配置的 但是你自己本地开发肯定不会有这些 就需要你
  • Quartus Ⅱ 15.1 将Verilog模块程序封装

    将模块程序封装 我们可以更加直观查看每个模块间的联系 先放一张成果图 博主做完数电实验就忘干净了 所以自己又摸索了一遍 最后成品可能不是太好看 怪自己手残 下面是详细步骤 首先要在files一栏 右击想要封装的模块 然后选择 Create
  • opencv3特征检测的配置与使用

    官网下载opencv for Linux 和opencv contrib opencv版本 3 4 1 编译安装 编译选项为 cmake D OPENCV EXTRA MODULES PATH
  • vue-cli3中解决在ie中报语法错误问题导致白屏

    1 一般报语法错误时因为部分浏览器不支持ES6 so 我们就应该下载 npm install babel polyfil 判断此插件是否成功 查看项目中是否有babel config js这个文件 2 在vue config js里配置引入
  • (2023)Linux安装pytorch并使用pycharm远程编译运行

    2023 Linux安装pytorch并使用pycharm远程编译运行 安装miniconda 这部分参考我这篇博客的前半部分Linux服务器上通过miniconda安装R 2022 miniconda 安装r Dream of Grass

随机推荐

  • 使用vue-video-player实现直播的方式

    文章来源 学习通http www jaxp net 目录 一 安装vue video player 二 使用 vue video player 课前准备 直播流协议https www cnblogs com yangchin9 p 1493
  • 权威发布:新一代人工智能发展白皮书(2017)

    来源 机器人大讲堂 指导单位 专家顾问及编写人员 顾 问 潘云鹤 中国工程院院士 指导单位 工业和信息化部信息化和软件服务业司 指导委员会 谢少锋 工信部信软司司长 李冠宇
  • iOS相机相册调用 — UIImagePickerController

    在iOS开发中如果要调用相机拍取照片或者是直接获取相册中的照片 那么调用UIImagePickerController是个不错的选择 UIImagePickerController继承于UINavigationController 使用代理
  • uirecorder 模块化

    uirecorder 模块化 uirecorder原生代码问题 模块化 思考 有关资料 uirecorder原生代码问题 原生js文件十分臃肿 所有依赖都在一个js中 一个case一个js文件 后期维护十分困难 模块化 对原生js进行模块化
  • 修复 Python 错误TypeError: Missing 1 Required Positional Argument

    类是面向对象编程语言的基本特征之一 每个对象都属于 Python 中的某个类 我们可以创建我们的类作为蓝图来创建相同类型的对象 我们使用 class 关键字在 Python 中定义一个类 Python 中一个非常重要的特性是在定义类时使用
  • stm32学习笔记——如何理解stm32中标志位和中断位区别和联系

    1 当某个模块 比如串口 定时器 含有状态寄存器则涉及标志位和中断之间的区别 进而有库函数FlagStatus和ITStatus的使用区别 2 标志位置位 是指当某事件发生时 无论对应的中断是否使能都会使得相应的标志位置位 而当对应的中断也
  • akka设计模式系列-Chain模式

    链式调用在很多框架和系统中经常存在 算不得上是我自己总结的设计模式 此处只是简单介绍在Akka中的两种实现方式 我在这边博客中简化了链式调用的场景 简化后也更符合Akka的设计哲学 trait Chained def receive Rec
  • 数学建模--二次规划型的求解的Python实现

    目录 1 算法流程简介 2 算法核心代码 3 算法效果展示 1 算法流程简介 二次规划模型 二次规划我们需要用到函数 Cvxopt solvers qp P q G h A b 首先解决二次规划问题和解决线性规划问题的流程差不多 求解思路如
  • 中文医学知识语言模型:BenTsao

    介绍 BenTsao 原名 华驼 HuaTuo 基于中文医学知识的大语言模型指令微调 本项目开源了经过中文医学指令精调 指令微调 Instruction tuning 的大语言模型集 包括LLaMA Alpaca Chinese Bloom
  • 无法打开这个应用,查看Microsoft store, 了解有关Nahimic的详细信息

    win s 打开搜索框 输入 Nahimic 鼠标右键单击 打开应用设置 点击 修复 重启电脑
  • 计算机图形学:Bezier曲线的绘制

    1 实验目的 掌握Bezier曲线的定义原理及绘制过程 定义 贝塞尔曲线 Bezier curve 又称贝兹曲线或贝济埃曲线 是应用于二维图形应用程序的数学曲线 一般的矢量图形软件通过它来精确画出曲线 贝兹曲线由线段与节点组成 节点是可拖动
  • 什么是千年虫?计算机如何开始处理日期?都有哪些时间日期格式化?

    目录 千年虫 漏洞 Year 2000 Problem 简称 Y2K 计算机是怎么开始处理日期的么 举例1 时间格式化举例 过滤器 举例2 时间格式化 自定义私有过滤器 日期格式化 高性能计数器演示 OLE时间对象 时间的基本用法 千年虫
  • 【Hello Algorithm】二叉树的递归套路

    本篇博客介绍 介绍二叉树的递归套路算法 二叉树的递归套路 递归思路 判断二叉树是否是平衡二叉树 判断二叉树是否是搜索二叉树 返回二叉树节点的最大距离 验证一棵树是否是满二叉树 寻找最大的BST子树 判断二叉树是否是完全二叉树 判断二叉树的最
  • Shell脚本:expect脚本免交互

    Shell脚本 expect脚本免交互 expect脚本免交互 一 免交互基本概述 1 交互与免交互的区别 2 格式 3 通过read实现免交互 4 通过cat实现查看和重定向 5 变量替换 二 expect安装 1 概述 2 作用 3 e
  • RuntimeError: one of the variables needed for gradient computation has been modified by an inplace o

    RuntimeError one of the variables needed for gradient computation has been modified by an inplace operation torch cuda F
  • 牛客每日刷题

    作者简介 我是18shou 一名即将秋招的java实习生 个人主页 18shou 系列专栏 牛客刷题专栏 在线刷题面经模拟面试 目录 题目 思路 题解 题目 给定一个长度为 n 的字符串 请编写一个函数判断该字符串是否回文 如果是回文请返回
  • computed计算属性和data_computed与watched选项的比较

    computed 通过属性计算而得来的属性 1 支持缓存 只有依赖数据发生改变 才会重新进行计算 computed 属性值会默认走缓存 计算属性是基于它们的响应式依赖进行缓存的 也就是基于data中声明过的数据通过计算得到的 2 不支持异步
  • 3.python学习笔记——Python数据类型转换

    有时候 我们需要对数据内置的类型进行转换 数据类型的转换 你只需要将数据类型作为函数名即可 以下几个内置的函数可以执行数据类型之间的转换 这些函数返回一个新的对象 表示转换的值 int x base 将x转换为一个整数 float x 将x
  • Modern C++ for C 程序员 第4部分

    文章目录 面向 C 程序员的 Modern C 系列第4部分 Lambdas 扩展我们的索引器 容器和算法 查找 STL中的查找算法 更多的容器 Boost容器 Boost MultiIndex 总结 这是bert hubert的系列文章
  • opencv3特征检测的配置与使用

    官网下载opencv for Linux 和opencv contrib opencv版本 3 4 1 编译安装 编译选项为 cmake D OPENCV EXTRA MODULES PATH