opencv边缘检测实现指定边缘区域的模糊处理?

我的需求时在身份证中找到头像,然后把这个头像模糊化处理。
我是opencv的纯小白(从来没用过),昨天在群里问了才有人告诉我去搜opencv、边缘检测、二值化,所以标题不是很准确,总之是实现上述需求。
请各位大大提供一些学习思路,感谢!

阅读 8.5k
1 个回答

我觉得你还是先找找不用模糊头像的方案比较好。

考虑到你遇到的问题是头像对识别结果影响过大,不如直接对图像进行二值化再上传到百度OCR接口。二值化方案很多,可以尝试先将三个通道加权灰度化,然后取一个合适的阈值进行二值化;也可以直接取一个颜色通道进行二值化。应该选取对比度最高的方案,以保证文字可以准确显示出来。

非要模糊头像的话,也是先进行灰度化,然后对图片进行边缘检测,连接边缘构成边界,由此可以确定一系列边界,找出其中最大的即为身份证边界,次大的应该是头像边界。通过头像边界确定一个包含头像的矩形框,在此位置进行模糊处理即可。

考虑到灰度化后大块深黑色部分一般只有衣领和头发,可以采用分水岭算法将图像的深黑色部分提取出来,找到其中最大的黑色区域一般为人的头发。如果发现两块极大的黑色区域,则取上方黑色区域作为人的头发区域。进而可以确定头像大致位置进行模糊处理。

并没有用过OpenCV不知道里面有没有封装好的边界提取和分割算法,不过自己实现起来应该也不算太难。然而我觉得还是再找找其他方案比较好。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进