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)
posted @ 2022-03-24 16:47  cc学习之路  阅读(171)  评论(0)    收藏  举报