有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

c#如何检测图像上的水位?

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

照片是从侧面拍摄的,如下所示:

enter image description here

(如果它同时检测到两条线也很好)。那么你能帮我从哪里开始吗?使用egde检测(有没有好的基本算法?),还是其他方法

最好能检测到水、焦炭和每一种液化物等


共 (3) 个答案

  1. # 1 楼答案

    你需要做一些边缘检测,一旦你有了边缘,试着在玻璃中找到水平面。你可以使用像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;
    

    产生如下图像:

    enter image description here

    现在应该更容易找到杯子里的水点了。由于所有的背景噪声都已消除,因此您可以专注于确定应该对哪个边缘设置关键帧

  2. # 2 楼答案

    这将有助于你获得有关玻璃的容量

    一旦你知道一个杯子能装多少水,你就可以用你自己写的函数在图像上画两条线。我建议用一条线表示玻璃尺寸,用一条线表示图像上方的水位,然后你可以使用这些线和玻璃的最大容量来形成两者之间的相关性,并计算玻璃中所含的液体水平

    记住,你的教授对你100%正确地完成作业不太感兴趣,他们更感兴趣的是让你做好准备,主动解决问题。谷歌搜索并不总能解决你的问题

  3. # 3 楼答案

    检查Hough变换here