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特征检测的配置与使用 的相关文章

  • 【VINS-Mono】RealsenseD435i运行VINS-Mono,在ubuntu18.04和opencv3和cv_bridge的报错记录

    VINS Mono xff08 A Robust and Versatile Monocular Visual Inertial State Estimator xff09 https github com HKUST Aerial Rob
  • ubuntu16.04安装opencv3.4

    参考blog https blog csdn net u013066730 article details 79411767 直接进行 完全没问题 sudo apt get install build essential libgtk2 0
  • vs2015的OpenCV3.2.0编译

    我们希望添加第三方功能模块和库或者针对特定cpu和gpu的编译调整优化选项 这样的需求就需要自己去编译opencv了 准备东西 opencv opencv contrib cmake 还有两个文件 因为可能是国内的原因 在configure
  • 方格运动问题

    常见的一个经典问题 给定一个方格子 另左上角坐标为 0 0 右下角坐标为 M N 从左上角开始每次只能向右走或者向下走 最后达到右下角的位置 求一共有多少种不同的路径 数学的想法 对于计算这个问题的时候 可以去思考 不管怎样 从上往下从左往
  • 白盒测试方法-静态结构分析法

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

    10秒学会codeblocks里批量替换变量名 我想把下面代码所有的frontt改成front 应该怎么做呢 typedef struct QueueElementType element MAXSIZE int frontt int re
  • mac生成树形结构

    第一步 安装tree brew install tree 第二步 在要展示树结构的文件里面打开终端 运行命令 tree d 只显示文件夹 tree L n 显示项目的层级 n表示层级数 比如想要显示项目三层结构 可以用tree l 3 tr
  • 用Cmake生成opencv_contrib的python接口

    最近在看opencv的Fisherface Eigenface的部分 但具体实现时发现该库包含在opencv的contrib模块里 这个模块是opencv的扩展库 里面包括很多特征的算法 SIFT SURF Adaboost算法 ml还有神
  • MATLAB批量重命名存储数据

    目录 文件查找 文件移动和改名 所调用函数功能 文件查找 首先确定数据存储的文件夹地址 记为folder dir 如果该文件夹不存在需要访问的子文件夹 则直接复制文件地址 如果存在需要访问的子文件夹 则要利用dir函数进行寻找 将子文件夹信
  • 如何找出U盘中隐藏的文件夹

    背景 这周二我们老师说我一个问题就是 说她的U盘里有一大堆东西但是打开U盘的时候显示为空 这个问题困扰了她好长时间 解决办法 第一步 用电脑管家杀毒 打开电脑管家 然后点击 病毒查杀 之后点击指定位置杀毒 杀毒位置为U盘所在盘符 首先排除了
  • 【OpenCV3图像处理】Mat类详解 之 元素的获取与赋值 ( 对比.at<>()函数 和 .ptr<>()函数)

    Mat中像素的获取与赋值 计算机视觉中 图像的读取是图像处理的基础 图像就是一系列像素值 OpenCV使用数据结构cv Mat来存储图像 cv Mat是一个矩阵类 矩阵中每一个元素都代表一个像素 对于灰度图像 像素用8位无符号数 0表示黑色
  • [小技巧] git 清理 repository

    使用如下命令可以快速清除 repository 里没有被 git 管理的文件 git clean xdf 如果要保留某些后缀的文件 如 txt 文件 使用如下命令 git clean xdfe txt 参考 http stackoverfl
  • opencv3+python3.5成语填字游戏(一)印刷体汉字的分割

    首先这是一个成语填字游戏 大概就是一张成语填字游戏图片 通过opencv图像识别后转为矩阵 再通过解算法 解出答案 在显示到图片上 源代码 https github com mayue801 crossword puzzle idiom 本
  • 小技巧——宝塔面板重启、重置命令

    1 Centos 安装脚本 yum install y wget wget O install sh http download bt cn install install sh sh install sh 2 Ubuntu Deepin
  • VS2010启动速度变慢和编译速度变慢的解决办法

    以前一直用VC6 0编写C 和MFC程序 速度非常快 后来因为要编64位程序 只能舍弃掉6 0 改VS2010 其实就功能来说 VC6 0真的够用了 VS2010的高级功能从来没用过 刚开始装VS2010的时候运行速度还算可以 但用了不到一
  • NotePad++添加到右键快捷方式

    首先看效果图 NotePad 添加到右键快捷方式 接下来是操作方式 首先在桌面上新建一个txt文本文档 然后将写入如下内容 Windows Registry Editor Version 5 00 HKEY CLASSES ROOT she
  • Quartus Ⅱ 15.1 将Verilog模块程序封装

    将模块程序封装 我们可以更加直观查看每个模块间的联系 先放一张成果图 博主做完数电实验就忘干净了 所以自己又摸索了一遍 最后成品可能不是太好看 怪自己手残 下面是详细步骤 首先要在files一栏 右击想要封装的模块 然后选择 Create
  • vue-cli3中解决在ie中报语法错误问题导致白屏

    1 一般报语法错误时因为部分浏览器不支持ES6 so 我们就应该下载 npm install babel polyfil 判断此插件是否成功 查看项目中是否有babel config js这个文件 2 在vue config js里配置引入
  • notepad++字符串替换

    删除空白行 在编辑选项里面包括很多功能 编辑 gt 行操作 gt 移除空行 包括空白字符 行首添加字符串 按CTRL F 选择替换页签 选择正则表达式 查找目标 设置为 替换为 设置自己想要替换的字符串 特殊字符需要添加 进行转义 行尾添加
  • win10 系统锁屏壁纸的目录

    路径 C Users 你自己的用户名 AppData Local Packages Microsoft Windows ContentDeliveryManager cw5n1h2txyewy LocalState Assets 查看 需要

随机推荐

  • 使用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