我的作业是编写一个非常简单的应用程序(Java 或 C#,我都知道),它可以检测图片中一杯水/可乐的水位(必须在那里画一条线)。我什至不知道如何开始。我用谷歌搜索了一整天,但没有找到有用的结果。有什么好的算法可以检测液位吗?
照片是从侧面拍的,像这样:
(如果它检测到两条线也很好)。那么你能帮我看看如何开始吗?使用egde检测(有什么好的基本算法吗?),或者其他方法?
如果它检测到水、可乐和所有液体等,那将是最好的....
最佳答案
您将不得不进行一些边缘检测,然后在检测到边缘后,尝试找到玻璃内的水平面。您可以使用像 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;
生成这样的图像:
现在应该更容易找到玻璃杯中的水点了。由于所有背景噪音都已消除,您可以集中精力确定应该切断的边缘。
关于c# - 如何检测图像上的水位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10607807/