opencv识别彩色二维码

记录一下识别彩色二维码过程,以及当中遇到的问题和解决办法

1. 由于过程中图片处理需要用到灰度图像,所以读取原图之后,需要转换一个grayImage (CV_BGR2GRAY)

2. GaussianBlur 和 Canny 处理图像, 消除噪声

3. 由于图像可能出现的不连续等情况,之后使用findContours找轮廓会遇到问题,所以先经过dilate 和 erode 处理图像

4. 使用findContours查找最外围轮廓,共分为四个轮廓,三个圆用于定位,一个中心的数据区域

5. 画轮廓(drawContours);分为两个image,一个是三个圆的circleImage,一个是中心的dataImage;circleImage只花轮廓即可,dataImage使用CV_FILLED参数填补

6. HoughCircles从circleImage中查找圆,找到直角顶点到斜边的中线,由于是等腰直角三角形(理论上是的,会有误差,可忽略),所以通过这个中线的向量去计算图像的倾斜度,然后进行旋转;由于是用的中线,所以要额外逆时针多旋转45° 角

7. 使用warpAffine 选择原图像,并使用白色背景填充,最后一个参数 Scalar即可

8. 同时旋转dataImage

9. 通过dataImage,查找最大,最小 的x 和 y 坐标,共四个值。

10. 由于方格个数固定,每行是47个,所以可计算间距,即之后循环的步长

11. 处理原图,范围是最大最小x y坐标内的图像,并且步长是上一步计算的结果。同时,判断像素是否在dataimage的轮廓内。如果不在,丢弃(说明是定位的圆 区域)

12. 每两个方格组成一个字符串,拼接,输出。

done.

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值