git:https://github.com/linyi0604/Computer-Vision

DoG和SIFT特征提取与描述

 # coding:utf-8

 import cv2

 # 读取图片
img = cv2.imread("../data/walez1.jpg")
# 转为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 创建一个sift对象 并计算灰度图像
sift = cv2.xfeatures2d.SIFT_create()
keypoints, descriptor = sift.detectAndCompute(gray, None)
"""
sift对象会使用DoG检测关键点,对关键点周围的区域计算向量特征,检测并计算
返回 关键点和描述符
关键点是点的列表
描述符是检测到的特征的局部区域图像列表 关键点的属性:
pt: 点的x y坐标
size: 表示特征的直径
angle: 特征方向
response: 关键点的强度
octave: 特征所在金字塔层级
算法进行迭代的时候, 作为参数的图像尺寸和相邻像素会发生变化
octave属性表示检测到关键点所在的层级
ID: 检测到关键点的ID """
# 在图像上绘制关键点
# DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS表示对每个关键点画出圆圈和方向
img = cv2.drawKeypoints(image=img, outImage=img, keypoints=keypoints,
flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS,
color=(51, 163, 236)) cv2.imshow("sift_keypoints", img)
cv2.waitKey()
cv2.destroyAllWindows()

hessian 与SURF特征提取与匹配

 # coding:utf-8

 import cv2

 img = cv2.imread("../data/walez1.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) surf = cv2.xfeatures2d.SURF_create(8000)
"""
创建surf对象,设置阈值,阈值越高检测到的特征就越少,
通过调整阈值得到合适的关键点
"""
# 检测图像中的关键点和描述
keypoints, descriptor = surf.detectAndCompute(gray, None)
"""
sift对象会使用DoG检测关键点,对关键点周围的区域计算向量特征,检测并计算
返回 关键点和描述符
关键点是点的列表
描述符是检测到的特征的局部区域图像列表 关键点的属性:
pt: 点的x y坐标
size: 表示特征的直径
angle: 特征方向
response: 关键点的强度
octave: 特征所在金字塔层级
算法进行迭代的时候, 作为参数的图像尺寸和相邻像素会发生变化
octave属性表示检测到关键点所在的层级
ID: 检测到关键点的ID """
# 将关键点画在原图像上
cv2.drawKeypoints(image=img, outImage=img,
keypoints=keypoints,flags=4,
color=(51, 163, 236)) cv2.imshow("surf_detected", img)
cv2.waitKey()
cv2.destroyAllWindows()

python opencv3 特征提取与描述 DoG SIFT hessian surf的更多相关文章

  1. 在OpenCV3.1.0中使用SIFT,SURF算法

    写在前边: 1.我使用的是python2.7 + OpenCV3.1.0 2.OpenCV3.0.0+的文档有很大问题,很多文档写的还是OpenCV2.0+, OpenCV3.0+根本用不了,其中有一 ...

  2. [OpenCV-Python] OpenCV 中图像特征提取与描述 部分 V (一)

    部分 V图像特征提取与描述 OpenCV-Python 中文教程(搬运)目录 29 理解图像特征 目标本节我会试着帮你理解什么是图像特征,为什么图像特征很重要,为什么角点很重要等.29.1 解释 我相 ...

  3. sift、surf、orb 特征提取及最优特征点匹配

    目录 sift sift特征简介 sift特征提取步骤 surf surf特征简介 surf特征提取步骤 orb orb特征简介 orb特征提取算法 代码实现 特征提取 特征匹配 附录 sift si ...

  4. 【CV现状-3.3】特征提取与描述

    #磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...

  5. [OpenCV-Python] OpenCV 中图像特征提取与描述 部分 V (二)

    部分 V图像特征提取与描述 OpenCV-Python 中文教程(搬运)目录 34 角点检测的 FAST 算法 目标 • 理解 FAST 算法的基础 • 使用 OpenCV 中的 FAST 算法相关函 ...

  6. 特征描述算子-sift

    特征描述算子-sift http://boche.github.io/download/sift/Introduction%20to%20SIFT.pdf

  7. Computer Vision_33_SIFT:ORB_An efficient alternative to SIFT or SURF——2012

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...

  8. Opencv Sift和Surf特征实现图像无缝拼接生成全景图像

    Sift和Surf算法实现两幅图像拼接的过程是一样的,主要分为4大部分: 1. 特征点提取和描述 2. 特征点配对,找到两幅图像中匹配点的位置 3. 通过配对点,生成变换矩阵,并对图像1应用变换矩阵生 ...

  9. python opencv3添加opencv-contrib

    不需要编译或其他操作,只需一句话安装第三方库利用sift等特征提取算法: sudo pip3 install opencv-contrib-python 附网站:https://pypi.python ...

随机推荐

  1. 蓝牙4.0 BLE入门

    在BLE协议中有两个角色,一个是周边(Periphery),另外一个是中央(Central).一个中央可以同时连接多个周边,但一个周边某一时刻只能连接一个中央.但是不管periphery还是centr ...

  2. 2017 jq 总结

    $(el).parent()         获取父级元素 .parents('th')        获取祖元素th .parentsUntil("th")         找到 ...

  3. Anaconda3+python3环境下如何创建python2环境(win+Linux下适用,同一个anaconda下py2/3共存)

    本人之前已经在anaconda环境下已经安装了python3的环境,现在因为一些需求,要安装python2环境 1.打开anaconda的anaconda prompt查看当前环境: conda in ...

  4. CodeForces 724G: Xor-matic Number of the Graph

    题目传送门:CF724G. 题意简述: 一张 \(n\) 个点的无向图,边有边权. 定义三元组 \((u,v,w)(1\le u < v\le n)\) 合法当且仅当存在从点 \(u\) 到点 ...

  5. linux nginx大量TIME_WAIT的解决办法--转

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' TIME_WAIT 8535 CLOSE_WAIT 5 FIN ...

  6. Tslib的移植【转】

    转自:http://www.cnblogs.com/uvsjoh/archive/2011/08/25/2152947.html移植Tslib 1 下载源码tslib-x.x.tar.gz 2 解压, ...

  7. ajax代码示例

    function loadXMLDoc(idName,url,sendOut) { var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, ...

  8. 使用UDP和TCP协议的各种应用和应用层协议

    IGMP和ICMP是传输层协议

  9. Linux_僵尸进程、挂载、block块、inode号

    僵尸进程: 基本概念: 进程分为父进程和子进程 父进程一死 子进程都会死 杀死主进程的时候  子进程也会被杀死 僵尸进程:主进程被杀死了  但是子进程还活着    子进程不会占用cpu但还是会占着内存 ...

  10. java基础54 网络通讯的三要素及网络/网页编程的概述

    1.概述 网络编程注意解决的是计算机(手机.平板.....)之间的数据传输问题.        网络编程:不需要基于html基础上,就可以进行数据间的传输.比如:FeiQ.QQ.微信.....     ...