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实现统计英文单词个数及字符串分割代码
May 28 Python
Python爬取网页中的图片(搜狗图片)详解
Mar 23 Python
Python中super函数的用法
Nov 17 Python
python+opencv轮廓检测代码解析
Jan 05 Python
python使用openpyxl库修改excel表格数据方法
May 03 Python
Django实现分页功能
Jul 02 Python
python读取图片任意范围区域
Jan 23 Python
python实现计数排序与桶排序实例代码
Mar 28 Python
Python3查找列表中重复元素的个数的3种方法详解
Feb 13 Python
pycharm导入源码的具体步骤
Aug 04 Python
有关pycharm登录github时有的时候会报错connection reset的问题
Sep 15 Python
Python 无限级分类树状结构生成算法的实现
Jan 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 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
2016/04/12 Javascript
NodeJs的优势和适合开发的程序
2016/08/14 NodeJs
JS添加或修改控件的样式(Class)实现方法
2016/10/15 Javascript
Sequelize中用group by进行分组聚合查询
2016/12/12 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
jQuery编写QQ简易聊天框
2020/08/27 jQuery
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
Python实现的双色球生成功能示例
2017/12/18 Python
Apache,wsgi,django 程序部署配置方法详解
2019/07/01 Python
使用python来调用CAN通讯的DLL实现方法
2019/07/03 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
python中关于数据类型的学习笔记
2020/07/19 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
优秀语文教师事迹
2014/05/18 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
美国旅游签证工作证明
2014/10/14 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
Windows server 2003卸载和安装IIS的图文教程
2022/07/15 Servers