问题陈述:
我必须确定图像中的哪个框是空的,哪个框是填充的(这里的数字和颜色表示框是填充的) https://photos.app.goo.gl/FpaShWVL1RV7z1Gt8
应用“查找轮廓”(外部)后 我已经把外面的21个箱子分开了
https://photos.app.goo.gl/12DGPy3iAYgPUMZ39
把盒子和图像分开后
https://photos.app.goo.gl/NQVmA5pAWufSReVD8
现在的问题是如何识别哪个盒子是空的,哪个盒子是填充的。在
提前谢谢。在
如果您在问题中共享代码,这将非常有帮助,因为我们可以修改它来回答您的问题。在
总之,根据我从您的问题中得到的大量信息,我发现您已经使用
findContour
完成了大部分工作。要将空框与填充框分开,请使用函数countNonZero
。在您可以将每个矩形输入到函数中,它将返回输入中的非零像素总数。因为白色区域被认为是空的,较高的分数将对应一个空矩形。您可以将countZero结果除以方框区域来规范化结果,得到0~1的结果。这将使门槛削减的决定更为简单。在
下面是一个示例代码:
我建议您使用
erode()
函数来断开任何与外部边界接触的数字。然后可以使用RETR_TREE
标志运行findcontours()
以获得子轮廓。您可以消除外部边界,因为它的面积最大。如果你有更多的轮廓,那么你就知道盒子是满的。在形态操作的This link将有助于防止腐蚀。在
如果你想知道盒子是不是空的。。。首先需要在二进制中定义“empty”。我的意思是:它对你意味着什么?它是如何翻译成计算机语言的?基本上,我想的是:你可能需要定义一个RGB颜色的范围(比如白色),如果你99%的像素都在这个范围内,那么图像为空的概率相当高。在
您还可以取图像中颜色的平均值,并为标准偏差设置一个阈值,如果通过或不通过,将触发一个空矩形或非矩形。但你要做的只是你想象中的极限。在
相关问题 更多 >
编程相关推荐