Python中利用Scipy包的SIFT方法进行图片识别的实例教程


Posted in Python onJune 03, 2016

scipy
scipy包包含致力于科学计算中常见问题的各个工具箱。它的不同子模块相应于不同的应用。像插值,积分,优化,图像处理,,特殊函数等等。
scipy可以与其它标准科学计算程序库进行比较,比如GSL(GNU C或C++科学计算库),或者Matlab工具箱。scipy是Python中科学计算程序的核心包;它用于有效地计算numpy矩阵,来让numpy和scipy协同工作。
在实现一个程序之前,值得检查下所需的数据处理方式是否已经在scipy中存在了。作为非专业程序员,科学家总是喜欢重新发明造轮子,导致了充满漏洞的,未经优化的,很难分享和维护的代码。相反,Scipy程序经过优化和测试,因此应该尽可能使用。
scipy由一些特定功能的子模块组成,它们全依赖numpy,但是每个之间基本独立。
举个Debian系的Linux中安装的例子(虽然我在windows上用--):

sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose

导入Numpy和这些scipy模块的标准方式是:
import numpy as np
from scipy import stats # 其它子模块相同

主scipy命名空间大多包含真正的numpy函数(尝试 scipy.cos 就是 np.cos)。这些仅仅是由于历史原因,通常没有理由在你的代码中使用import scipy。

使用图像匹配SIFT算法进行LOGO检测
先上效果图:

Python中利用Scipy包的SIFT方法进行图片识别的实例教程

其中Python中利用Scipy包的SIFT方法进行图片识别的实例教程是logo标识,

Python中利用Scipy包的SIFT方法进行图片识别的实例教程

代码如下.

#coding=utf-8 
import cv2 
import scipy as sp 
 
img1 = cv2.imread('x1.jpg',0) # queryImage 
img2 = cv2.imread('x2.jpg',0) # trainImage 
 
# Initiate SIFT detector 
sift = cv2.SIFT() 
 
# find the keypoints and descriptors with SIFT 
kp1, des1 = sift.detectAndCompute(img1,None) 
kp2, des2 = sift.detectAndCompute(img2,None) 
 
# FLANN parameters 
FLANN_INDEX_KDTREE = 0 
index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5) 
search_params = dict(checks=50)  # or pass empty dictionary 
flann = cv2.FlannBasedMatcher(index_params,search_params) 
matches = flann.knnMatch(des1,des2,k=2) 
 
print 'matches...',len(matches) 
# Apply ratio test 
good = [] 
for m,n in matches: 
  if m.distance < 0.75*n.distance: 
    good.append(m) 
print 'good',len(good) 
# ##################################### 
# visualization 
h1, w1 = img1.shape[:2] 
h2, w2 = img2.shape[:2] 
view = sp.zeros((max(h1, h2), w1 + w2, 3), sp.uint8) 
view[:h1, :w1, 0] = img1 
view[:h2, w1:, 0] = img2 
view[:, :, 1] = view[:, :, 0] 
view[:, :, 2] = view[:, :, 0] 
 
for m in good: 
  # draw the keypoints 
  # print m.queryIdx, m.trainIdx, m.distance 
  color = tuple([sp.random.randint(0, 255) for _ in xrange(3)]) 
  #print 'kp1,kp2',kp1,kp2 
  cv2.line(view, (int(kp1[m.queryIdx].pt[0]), int(kp1[m.queryIdx].pt[1])) , (int(kp2[m.trainIdx].pt[0] + w1), int(kp2[m.trainIdx].pt[1])), color) 
 
cv2.imshow("view", view) 
cv2.waitKey()
Python 相关文章推荐
python中Flask框架简单入门实例
Mar 21 Python
Python中每次处理一个字符的5种方法
May 21 Python
python利用拉链法实现字典方法示例
Mar 25 Python
Python制作刷网页流量工具
Apr 23 Python
python3操作微信itchat实现发送图片
Feb 24 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
Aug 03 Python
在PyCharm中三步完成PyPy解释器的配置的方法
Oct 29 Python
提升Python程序性能的7个习惯
Apr 14 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
Jul 31 Python
jupyter notebook tensorflow打印device信息实例
Apr 20 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
May 12 Python
Python数据分析之pandas函数详解
Apr 21 Python
Python中的descriptor描述器简明使用指南
Jun 02 #Python
Python黑魔法Descriptor描述符的实例解析
Jun 02 #Python
深入理解Python变量与常量
Jun 02 #Python
Python中的Descriptor描述符学习教程
Jun 02 #Python
从源码解析Python的Flask框架中request对象的用法
Jun 02 #Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
Jun 02 #Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
Jun 02 #Python
You might like
用PHP制作的意见反馈表源码
2007/03/11 PHP
PHP 查找字符串常用函数介绍
2012/06/07 PHP
ini_set的用法介绍
2014/01/07 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
使用jquery prev()方法找到同级的前一个元素
2014/07/11 Javascript
jquery常用操作小结
2014/07/21 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
2016/05/15 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
vue-router命名视图的使用讲解
2019/01/19 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
2019/10/12 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
vue实现计算器功能
2020/02/22 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
原生js+canvas实现下雪效果
2020/08/02 Javascript
记录一次websocket封装的过程
2020/11/23 Javascript
Python爬虫代理IP池实现方法
2017/01/05 Python
python中的数据结构比较
2019/05/13 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
外科实习自我鉴定
2013/10/06 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
SpringBoot生成License的实现示例
2021/06/16 Java/Android