先上成果:
技术关键:
自适应阈值、标记法求联通区域。
记录一下坑:
1.因为是要在Qt开发,并且要用的opencv,以前一直是在VS下开发opencv相关的项目,就直接搜怎么在Qt下进行opencv开发。这个坑其实是自己大意了掉进去了,按部就班看着网上教程去配置,前面opencv的环境配置我都是直接跳过,直接看最后INCLUDEPATHS和LIBS部分要咋写,但是无论是哪个博客的教程,我去按自己路径相应地仿照配置,头文件都能读到,但调用opencv的语句都会报错。
后来才发现这其中是MVSC和MinGw的原因,在创建qt工程都一路点下去,没注意到kits的选择…
这个问题实在是太不应该犯了。
2.我使用的图片都是那种手机拍摄的,不是电脑绘制的图片,这让我在图像处理吃了瘪,后来使用了最大类间方差法解决的,直接搜getThreshVal_Otsu_8u这个就懂了。
3.联通区域,opencv貌似没有现成的函数,但是可以利用轮廓以及颜色标记去模拟实现?
举个例子
先绘制好所有物体的轮廓,然后注意findContours这个函数是能保证轮廓是有序的,然后再按顺序i依次给这三个轮廓上色,上色的方法就是drawContours里使用填充(-1)。然后遍历整一副图像,判断特征颜色,即利用i去标记。