快乐虾

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)

匹配的效果也令人失望。



Python图像处理(13):brisk特征检测相关推荐

  1. Python 图像处理实用指南:1~5

    原文:Hands-On Image Processing with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 计算机视觉 译文集],采用译后编辑(MT ...

  2. pil对图像加透明 python_使用Python图像处理库Pillow处理图像文件

    文/江红  本文来源<Python程序设计与算法基础教程(第2版)-微课版> 本案例通过使用Python图像处理库Pillow,帮助读者进一步了解Python的基本概念:模块.对象.方法和 ...

  3. Python图像处理

    一.简介 实现计算机视觉任务的过程中,不可避免地需要对图像进行读写操作以及图像预处理操作,下面介绍两个常用的Python图像处理库:OpenCV和Pillow. OpenCV全称是由英特尔公司资助的开 ...

  4. Python图像处理库PIL的ImageOps模块介绍 ----- 一些基本的图像操作

    原文地址:http://blog.csdn.net/icamera0/article/details/50785776 原文博主的博客中有相当多的python图像处理操作介绍,如有需要,可移驾原博主博 ...

  5. Python图像处理:使用TensorFlow或Keras进行图像分类

    在本节中,我们将重新讨论手写数字分类的问题(使用MNIST数据集),但这次使用的是深度神经网络,即使用两个非常流行的深度学习库TensorFlow和Keras来解决这个问题.TensorFlow(TF ...

  6. Python图像处理库PIL中图像格式转换

    在数字图像处理中,针对不同的图像格式有其特定的处理算法.所以,在做图像处理之前,我们需要考虑清楚自己要基于哪种格式的图像进行算法设计及其实现.本文基于这个需求,使用python中的图像处理库PIL来实 ...

  7. python图像处理基础知识(cv库函数说明)

    python图像处理基础知识,函数说明 目录 python图像处理基础知识,函数说明 1.处理照片(open_cv库) 1.1 cv2.imread('filepath',flags) 1.2 cv2 ...

  8. 万字长文告诉新手如何学习Python图像处理(上篇完结 四十四) | 「Python」有奖征文

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  9. python 图像处理

    转自: 点击打开链接 第 1 章 基本的图像操作和处理 本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的 Python 工具包,并介绍用于读取图像.图像转换和缩放.计算导数.画图和保 ...

最新文章

  1. 把时间当作朋友(第一版)笔记
  2. webp-imageio 如何编译及使用
  3. spring mybatis 整合jar 包冲突问题
  4. 每日一linux命令
  5. 我的狗丢了,所以我能加你微信吗? | 今日最佳
  6. 使用WildFly 9和Jolokia监视DevOps样式
  7. 了解如何在20分钟内创建您的第一个Angular应用
  8. windowsCE异常和中断服务程序初探(-)
  9. Linux进程全解6——进程的诞生和消亡
  10. Redis系列二、redis的五种数据结构和相关指令之String
  11. HttpClient4.5使用RequestConfig配置连接信息
  12. php中的rand,php rand() 随机数生成的方法介绍
  13. 反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)加入自己的思考(pytorch函数)(三)
  14. )类 新建javafx程序时_CML Copley提供的运动控制程序开发类库
  15. RabbitMQ----源码安装
  16. 2021李林精讲精练880题 【数学二 解析分册】
  17. VisionPro 工具
  18. 关于IAP支付,谷歌和苹果订阅商品——最白话,手把手教你做系列。
  19. STM32F105 UART4 发送异常及解决
  20. 弱校联萌十一大决战之如日中天A Ariel【二进制+排序】

热门文章

  1. JTAG篇(5) OpenOCD 写入数据到TAP
  2. Delphi实现多线程
  3. 这款Shadertoy转换器,太牛逼了!
  4. 【信息系统项目管理师】第二十二章 信息系统安全管理(考点汇总篇)
  5. ACP敏捷知识点汇总
  6. Mysql修改数据库名方法
  7. 使用 EPUB 制作数字图书(转发)
  8. 【python】os.path.exists(file_path) 存在的问题
  9. Aspose.Words控件支持DOC,OOXML,RTF,HTML,OpenDocument,PDF,XPS,EPUB和其他格式
  10. C++多线程启动、暂停、继续与停止