使用Python图像确定咖啡壶中咖啡的高度

使用Python图像确定咖啡壶中咖啡的高度,python,image-processing,Python,Image Processing,我们在办公室的小厨房里有一个网络摄像头,它的焦点是我们的咖啡机。咖啡壶清晰可见。咖啡壶和相机的位置都是静态的。是否可以使用图像识别计算咖啡壶中咖啡的高度?我见过图像识别用于相当复杂的东西,比如人脸识别。与这些项目相比,测量高度似乎是一项微不足道的任务 (这是我最好的猜测,我不知道潜在的复杂性。) 我该怎么办?这会被认为是一项非常复杂的工作吗?仅供参考,我从未做过任何与成像相关的工作。您正在寻找的。但是你只需要在咖啡的棕色/黑色和咖啡壶后面背景的颜色之间进行分割。首先进行阈值分割,然后进行分割。然

我们在办公室的小厨房里有一个网络摄像头,它的焦点是我们的咖啡机。咖啡壶清晰可见。咖啡壶和相机的位置都是静态的。是否可以使用图像识别计算咖啡壶中咖啡的高度?我见过图像识别用于相当复杂的东西,比如人脸识别。与这些项目相比,测量高度似乎是一项微不足道的任务

(这是我最好的猜测,我不知道潜在的复杂性。)


我该怎么办?这会被认为是一项非常复杂的工作吗?仅供参考,我从未做过任何与成像相关的工作。

您正在寻找的。但是你只需要在咖啡的棕色/黑色和咖啡壶后面背景的颜色之间进行分割。

首先进行阈值分割,然后进行分割。然后,您可以更轻松地检测边缘。

我将尝试的步骤:

  • 在中转换图像
  • ,只留下咖啡。您可以通过实验手动发现一个好的阈值
  • 。Blob的面积(像素数)是计算高度的一种方法,即面积/宽度

  • 由于咖啡壶的位置是固定的,因此获取一个采样帧,并将一列像素定位在一个没有反射的点上,在该点上可以很容易地看到最小和最大咖啡量。检查下图中的绿色垂直线段:


    (来源:)

    最简单的方法是将两个帧转换为灰度(
    colorsys.rgb_to_hsv
    每个rgb像素,只保留
    v
    (第三)部分),一个是空的,一个是满的(显然是在相同的照明条件下,通常会是这种情况)和所选线段中所有像素的亮度之和。假设壶空的盒子总数达到550,壶满的盒子总数达到220(咖啡是深色的)。通过将输入帧和与这两个和进行比较,可以粗略估计咖啡壶中咖啡的百分比

    不过,我不会把我的生命押在这种方法的准确性上,即使是从一秒到一秒的波动也可能很剧烈:)

    注意:在我的例子中,像素的绿色列应该延伸到壶的底部;我只是举了一个例子来说明我的意思。

    • 制作罐内不同级别咖啡的图片
    • 将图像的采样降低到4*10像素
    • 为每一张新的实时图片制作相同的循环
    • 计算每个像素值与参考图像的差值
    • 以最小的差值和取参考图像,就可以得到咖啡机的状态
    您可以尝试灰度版本或仅红色或绿色版本是否可以提供更好的结果


    如果不同的灯光设置出现问题,则此方法无效。只需为咖啡机买一个聚光灯,或者放轻松,或者将每张图片变暗,直到所有像素的总和达到一个参考值。

    我想知道生产率的提高是否能支付开发人员在这个项目上花费的时间…+1对于我读过的最古怪的问题,使用网络摄像头找出谁拿走了最后一个杯子,并且没有重新填充Geekdom不知道边界。下一步是音频识别,看看谁没有冲水保罗:当然,好像你们需要外部刺激来喝咖啡。对你的嗜好负责,先生!:)