OpenCV定位地板上的书
任务目标是将下面的图片中的书本找出来:
使用到的技术包括:转灰度图、提取颜色分量、二值化、形态学、轮廓提取等。
我们尝试先把图片转为灰度图,然后二值化,看看效果:
可以看到,二值化后,书的边缘有很大一部分跟背景混在一起了。这虽然能接着处理,但会提高处理的难度以及质量。究其原因,是因为转为灰度图后,书本的灰度跟地板非常接近。但实际上,原彩色图中,书本是明显的黄色,跟地板差异很大。这一信息将给我们带来帮助。
将图片转至HSV空间,可以看到,在S通道中,书本跟地板的差异很大:
现在进行二值化,可以看到二值化的效果比之前要好很多:
现在图上有一条细线,可以通过形态学的开运算删除:
为了让感兴趣区域形成一个整体,可以再运用形态学闭运算:
现在的图已经是一个连通区域,可以生成轮廓,然后计算出外包矩形即可。
可以看到,最后的绿框刚好包围了书本。任务完成。
归纳完成任务的方法:
1、彩色图片转至HSV空间,提取S分量。
2、对图片进行二值化。
3、形态学开运算和闭运算,消除书本外的小物体,并将书本区域连通。
4、生成轮廓,继而获得轮廓的外包围矩形。