我有一个地板布局(相当简单,白色背景,黑色内容)和地板上的椅子模板。我知道我需要寻找的所有方向(简单的向上,向下,向左,向右),但我不知道地板模板的尺寸。
我和AForge一起工作,从布局复制椅子,所以我知道确切的比例,我可以在地板上找到所有椅子。那就是给我我想要的东西(我只需要椅子的中心x,y)。展望未来我想自动化这个。我不知道上传的平面图的确切比例
我使用Emgu.CV示例尝试找到它(SURFFeature示例项目),但仅使用椅子作为模板不起作用。它似乎没有找到任何observeDescriptors(它是null),我假设因为椅子本身并不太复杂。我尝试了一个更复杂的模板(椅子+桌子,虽然它不能正常工作,因为相对于桌子的椅子不一致)。结果似乎没有用,它指出平面图上的一些随机位置,但似乎不太正确。
关于如何确定规模的任何想法?
答案 0 :(得分:1)
使用错误的刻度,读数不准确。这可能导致包装重量被错误印刷在制成地板秤而不是平衡秤的谷物盒上。这是因为这些尺度上的精确度不同,以适应企业的多样化需求。并且,通过使用不同的calabrations,这可能导致在地板尺度上测量的相同产品之间的重量差异而不是计数尺度。
答案 1 :(得分:0)
好吧,我能够让这个工作。我最终做的是在圆圈内画一个正方形并将我想要的物体放在正方形
中然后我使用:Blob[] blobs = blobCounter.GetObjectsInformation( );
来获取页面上的所有blob。
遍历blob并查找所有圆圈和方块,将它们添加到每个
的列表中 if (shapeChecker.IsCircle(edgePoints, out center, out radius))
{
circs.Add(b);
}
else if (corners.Count == 3)
tris.Add(b);
else if (corners.Count == 4)
boxes.Add(b);
循环遍历每个圆圈,并为每个圆圈所有正方形,并寻找具有大致相同中心点的两个圆圈。
要获取对象内部,我从正方形内部复制图像裁剪(添加一些到x,y,从宽度,高度中删除一些)。这给了我方形内的空白区域和对象
然后我使用autocrop(来自here,虽然修改了因为我不需要旋转/灰度)来切掉白色空间而只留下我想要的图像!