你将不得不做一些边缘检测,然后一旦你有边缘,尝试找到玻璃内的水平.您可以使用像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;
Run Code Online (Sandbox Code Playgroud)
产生如下图像:

现在应该更容易找到玻璃杯中的水点.由于消除了所有背景噪音,您可以专注于确定应关键的边缘.