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的web.py框架并从hello world开始编程
Apr 25 Python
Python基于Tkinter实现的记事本实例
Jun 17 Python
python梯度下降法的简单示例
Aug 31 Python
python每天定时运行某程序代码
Aug 16 Python
python文字转语音的实例代码分析
Nov 12 Python
完美解决pycharm导入自己写的py文件爆红问题
Feb 12 Python
Python如何用filter函数筛选数据
Mar 05 Python
python 递归调用返回None的问题及解决方法
Mar 16 Python
基于Python爬取51cto博客页面信息过程解析
Aug 25 Python
python爬虫scrapy框架之增量式爬虫的示例代码
Feb 26 Python
浅谈Python基础之列表那些事儿
May 11 Python
教你用python实现12306余票查询
Jun 30 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 ss7.5的数据调用 (笔记)
2010/03/08 PHP
一个用js实现的页内搜索代码
2007/05/23 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
2014/04/03 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
js实现匹配时换色的输入提示特效代码
2015/08/17 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
Vue中对比scoped css和css module的区别
2018/05/17 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
iSlider手机端图片滑动切换插件使用详解
2019/12/24 Javascript
vue 解决addRoutes多次添加路由重复的操作
2020/08/04 Javascript
提升Python程序运行效率的6个方法
2015/03/31 Python
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
深入解析Python中的变量和赋值运算符
2015/10/12 Python
python字符串过滤性能比较5种方法
2017/06/22 Python
Python paramiko模块的使用示例
2018/04/11 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
对python中Json与object转化的方法详解
2018/12/31 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
白色公司:The White Company
2017/10/11 全球购物
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
母婴店促销方案
2014/03/05 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏