我的作业是写一个非常简单的应用程序(Java或C#,我都知道),它可以检测图片中一杯水/可乐的水位(它必须在那里画一条线)。我甚至不知道该怎么开始。我用谷歌搜索了一整天,但没有找到有用的结果。有没有好的算法,可以检测液体的液位?
照片是从侧面拍摄的,就像这样:

(如果它同时检测到这两行,也是很好的)。那么你能帮我解决如何开始的问题吗?使用egde检测(有没有好的基本算法?),或者其他方法?
最好是它能探测到水,焦炭,以及所有的液体等等……
发布于 2012-05-16 04:25:31
你将不得不做一些边缘检测,然后一旦你有了边缘,试着找到玻璃内的水平线。您可以使用像Aforge.NET这样的工具包。然后检测边缘的代码非常简单,例如:
Bitmap b = new Bitmap(Image.FromFile(@"C:\Temp\water.jpg"));
// create filter
Edges filter = new Edges();
// apply the filter
filter.ApplyInPlace(b);
pictureBox1.Image = b;生成如下图像:

现在应该更容易找到玻璃杯中的水点了。由于所有背景噪波都已消除,因此您可以专注于确定应该关闭哪条边。
发布于 2012-05-16 04:00:03
检查霍夫变换here
发布于 2012-05-16 04:13:52
它将帮助您获得有问题的玻璃的容量。
一旦你知道一个玻璃杯可以容纳多少水,你就可以使用你自己编写的函数在图像上画两条线。我建议一条线表示玻璃大小,一条线表示叠加在图像上的水位,然后您可以使用这些线和玻璃的最大容量来形成两者之间的相关性,并计算出玻璃中包含的液体水平。
记住,你的教授对你完成100%正确的作业并不是很感兴趣,他们更感兴趣的是让你主动解决问题。谷歌搜索并不总是能解决你的问题。
https://stackoverflow.com/questions/10607807
复制相似问题