OpenCV---0010(目标检测--矩与二维码)
目标检测--矩
矩是图像特征的算子 被广泛的用于图像检索 识别 以及 图像匹配 图像重建 图像压缩和图像序列分析领域
空间矩和中心矩
图像的空间矩计算公式为 m(ji) = 求和I(x,y)xj*yi
当x,y为0时被称为0阶矩 零阶矩可以用来求取质心 当i,j分别为01时 被称为1阶矩
Opencv已经提供了函数;
retval = cv.moments(array)
array 轮廓点集
retval: dict格式的Moments类变量
Moments.m01 和 Moments.m10 是一阶矩
Moment对象中有 空间矩 中心矩 归一化中心矩
Hu矩
Hu矩具有旋转 平移 缩放不变性 在图像旋转和缩放的情况下 Hu矩具有更广泛的应用
Hu矩是由二阶三阶中心矩计算得到的7个不变矩
OpenCv提供了函数
hu = cv.HuMoments(m)
m : 图像矩
将cv.moments(array) 和 cv.HuMoments(m) 连用 !!
基于Hu的轮廓匹配
Opencv提供了函数;
retval = cv.matchShapes(cont1,cont2,method)
cont1 原灰度图像或者轮廓 也可以是Hu矩
cont2 模板图像或轮廓 也可以是Hu矩
method 比较两图像Hu矩的方法 一般直接写1
retval越小越相似
点集拟合
有时候 由很多小的密集的连通域 我们并不需要将他们一个个全部的拟合出来 我们需要将他们看为一个整体 整体拟合出来
函数:
retval,triangle = cv.minEnclosingTriangle(points)
points: 待寻找拟合的点集
triangle: 拟合出的三角形的3个顶点坐标
center,radius = cv.minEnclosingCircle(points)
圆形拟合
二维码检测
opencv 提供了二维码定位和识别解析函数
检测图片中是否存在二维码
retval,points = cv.QRCodeDetector(img)
retval : True 或 False
points : 包含二维码最小四边形的四个顶点 即二维码的四个顶点
points 存放在一个 4*2 的ndarray对象中
检测二维码信息
retval, straight_qrcode = cv.QRCodeDetector.decode(img,points)
img: 待检测图像
points: 第一步得到的二维码图像定位信息
straight_qrcode: 经过矫正和二值化的二维码
定位和二维码检测一体化函数:
retval,points,strainght_qrcode = cv.QRCodeDetector.detectAndDecode(img)

浙公网安备 33010602011771号