Python图像处理(13):brisk特征检测

快乐虾

http://blog.csdn.net/lights_joy/

欢迎转载,但请保留作者信息

BRISK是BRIEF描述子的一种改进,相比于BRIEF特征,它具有旋转不变性、尺度不变性和对噪声的鲁棒性。本节尝试在python下使用此特征检测方式,使用的测试图像为先前已经转换为灰度图的棉花图像:

首先读取图像:

# 读取原始图像
img = cv2.imread(r‘F:\projects\src\opencv\images\cotton\39.gray.jpg‘)
plt.imshow(img)

接着创建一个brisk特征检测器:

# 创建brisk检测器
brisk = cv2.BRISK_create()

接下来计算图像的特征,此函数的原型为:

Help on built-in function detectAndCompute:

detectAndCompute(...)
    detectAndCompute(image, mask[, descriptors[, useProvidedKeypoints]]) -> keypoints, descriptors

调用它计算特征点并显示:

# 计算特征点并显示
(kpt, desc) = brisk.detectAndCompute(img, None)
bk_img = img.copy()
out_img = img.copy()
out_img = cv2.drawKeypoints(bk_img, kpt, out_img)
plt.figure(2)
plt.imshow(out_img)

结果就是这样的:

貌似对我们的叶片识别没有直接的帮助,需要自己寻找特征点才行。

直接将原图旋转30度:

# 原图像旋转30度
ang=np.pi/6
rot_mat = np.array([[np.cos(ang), np.sin(ang), 0], [-np.sin(ang), np.cos(ang), 200]])
img_30 = cv2.warpAffine(img, rot_mat, (600,500))
plt.figure(3)
plt.imshow(img_30)

计算新的特征值:

# 特征点检测
(kpt_30, desc_30) = brisk.detectAndCompute(img_30, None)
bk_img = img_30.copy()
out_img = img_30.copy()
out_img = cv2.drawKeypoints(bk_img, kpt_30, out_img)
plt.figure(4)
plt.imshow(out_img)

直接做特征点的匹配:

# 特征点匹配
matcher = cv2.BFMatcher()
matches = matcher.match(desc, desc_30)
print(matches)

最后用图像显示匹配的结果:

# 显示匹配结果,仅显示前面的5个点
matches.sort(None, None, True)
out_img = cv2.drawMatches(img, kpt, img_30, kpt_30, matches[0:5], out_img)
plt.figure(5)
plt.imshow(out_img)

匹配的效果也令人失望。

??

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-28 15:14:45

Python图像处理(13):brisk特征检测的相关文章

Python图像处理库(1)

转自:http://www.ituring.com.cn/tupubarticle/2024 第 1 章 基本的图像操作和处理 本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的 Python 工具包,并介绍用于读取图像.图像转换和缩放.计算导数.画图和保存结果等的基本工具.这些工具的使用将贯穿本书的剩余章节. 1.1 PIL:Python图像处理类库 PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能,以及大量有用的基本图

Python图像处理类库

本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的 Python 工具包,并介绍用于读取图像.图像转换和缩放.计算导数.画图和保存结果等的基本工具.这些工具的使用将贯穿本书的剩余章节. 1.1 PIL:Python图像处理类库 PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能,以及大量有用的基本图像操作,比如图像缩放.裁剪.旋转.颜色转换等.PIL 是免费的,可以从 http://www.pythonware.com/pr

Python图像处理库PIL中图像格式转换(一)

在数字图像处理中,针对不同的图像格式有其特定的处理算法.所以,在做图像处理之前,我们需要考虑清楚自己要基于哪种格式的图像进行算法设计及其实现.本文基于这个需求,使用python中的图像处理库PIL来实现不同图像格式的转换. 对于彩色图像,不管其图像格式是PNG,还是BMP,或者JPG,在PIL中,使用Image模块的open()函数打开后,返回的图像对象的模式都是"RGB".而对于灰度图像,不管其图像格式是PNG,还是BMP,或者JPG,打开后,其模式为"L". 通

Python基础13 - Paramiko模块学习

@@@文章内容参照老男孩教育 Alex金角大王,武Sir银角大王@@@ 一.Paramiko模块安装 系统环境CentOS 7,Python3.6 1.安装Python3.6 2.yum安装openssl-devel 1 [[email protected] ~]# yum install openssl-devel -y 3.重新编译ssl模块 1 cd Python-3.6.2 2 ./configure --with-ssl 3 make 4 sudo make install 4使用pi

Python图像处理库PIL的ImageOps模块介绍

(Newin 1.1.3)ImageOps模块包含了一些"ready-made"的图像处理操作.这个模块somewhatexperimental,大多数操作只工作在L和RGB图像上. 一.ImageOps模块的函数 1.  Autocontrast 定义:ImageOps.autocontrast(image, cutoff=0)? image 含义:最大图像对比度.这个函数计算一个输入图像的直方图,从这个直方图中去除最亮和最暗的百分之cutoff,然后重新映射图像,以便保留的最暗像素

Python_Imaging_Library中文手册、PIL中文手册、python图像处理

Python Imaging Library 中文手册 这是PIL的官方手册,2005年5月6日发布.这个版本涵盖 PIL 1.1.5的全部内容.本中文手册来自Woodpecker.org.cn 啄木鸟社区 你可以在PythonWare library找到改文档其它格式的版本以及先前的版本. 原版出处:http://www.pythonware.com/library/pil/handbook/ 目录 Python Imaging Library 中文手册 第一部分:介绍 概览 介绍 图像归档处

Python图像处理(1):替换OpenCV

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 先前构造图像处理开发环境的时候,用一个别人编译好的安装包将OpenCV安装到了c:\python27\lib\site-packages目录下,但这个OpenCV没有符号表,无法进行C/C++的代码调试.我们用VS编译的OpenCV替换它. 首先修改OpenCV的Python接口工程,将其输出到python的库目录下,

【python】13位随机序列号生成工具 源码分析

By Dolphin,BeiJing,20150712 0X00  背景 最近在学习python 这门语言,刚学完for循环,对于很多语句语法都不太熟悉.就在今天,看到有某个网站的活动,需要输入一个13位的序列号来判断你是否中奖,但是这个13位序列号是需要购买他们家的产品才能获得,得耗费一定的金钱,于是我就在想,是不是能自己写一个序列号生成器来碰碰运气,所以决定运用刚学的python的初级知识进行编写. 0X01  知识点准备 这个工具主要的功能是生成随机字母做序列号,python中的rando

笨办法学Python 练习13和14

原题: 1 from sys import argv 2 3 script, first, second, third = argv 4 5 print "The script is called:", script 6 print "Your first variable is:", first 7 print "Your second variable is:", second 8 print "Your third variabl