前言
利用Python实现OpenCV实现边缘检测。废话不多说。
让我们愉快地开始吧~
开发工具
Python版本: 3.6.4
相关模块:
cv2模块;
以及一些Python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
OpenCV可以检测图像的主要特征,然后提取图像的特征,使其成为图像描述符
这些图像特征,也就是图像描述符,可以作为图像搜索的数据库
特征检测算法
这里简单介绍一下OpenCV常用的几种特征检测和提取算法。
Harris、FAST:用于检测角点的。
SIFT、SURF、BRIEF:用于检测斑点的。
ORB:FAST算法和BRIEF算法的结合体。\
检测和提取的工作做完了,就是特征匹配。
主要是「暴力匹配法」和「FLANN匹配法」。
提了好几次特征了,那么什么是图像的特征呢?
图像特征就是指有意义的图像区域,具有独特性或易于识别性,比如角点、斑点以及高密度区。
角点可以通过OpenCV的cornerHarris来识别。
「SIFT」则是一种与图像比例无关的角点检测方法,尺度不变特征变换。
采用DoG和SIFT来检测关键点并提取关键点周围的特征。
「SURF」特征检测算法,则是采用Hessian算法检测关键点,使用SURF提取特征。
图像检索
采用FLANN匹配,近似最近邻的快速库
原始图片如下,为微博的Logo
目标图片如下,包含新浪微博的名称
具体代码如下
import cv2
good = []
# 原始图片
queryImage = cv2.imread('wb1.jpg', 0)