使用Python图像计算咖啡壶中咖啡的高度

25 投票
5 回答
1353 浏览
提问于 2025-04-16 01:09

我们办公室的厨房里有一个摄像头,专门对着咖啡机。咖啡壶的位置和摄像头都是固定的。请问,能不能通过图像识别来计算咖啡壶里咖啡的高度呢?我见过图像识别被用在一些很复杂的事情上,比如人脸识别。相比那些项目,这个测量高度的任务看起来简单多了。

(这是我最好的猜测,但我对其中的复杂性一无所知。)

我该怎么做呢?这会被认为是一个非常复杂的工作吗?顺便说一下,我之前从来没有做过任何与图像相关的工作。

5 个回答

2

首先进行阈值处理,然后再进行分割。这样你就能更容易地检测到边缘了。

4

我会尝试以下步骤:

  1. 把图片转换成灰度图
  2. 对图片进行二值化处理,只保留咖啡的部分。你可以通过实验找到一个合适的阈值。
  3. 进行斑点提取。斑点的面积(像素数量)可以用来计算高度,也就是面积除以宽度。
11

因为咖啡壶的位置是固定的,所以我们可以先拍一张样本图,找到一列像素,这一列能清楚地显示出咖啡的最小和最大量,而且这个地方没有反光。看看下面这张图片中的绿色竖线部分:


(来源: nullnetwork.net)

最简单的方法是准备两张图,一张是空壶的,一张是满壶的(当然要在相同的光线条件下拍摄,这通常是可以做到的),然后把图像转换成灰度图(使用colorsys.rgb_to_hsv把每个RGB像素转换,只保留v(第三个)分量),接着把选定的那一列像素的亮度加起来。假设空壶的亮度总和是550,而满壶的总和是220(咖啡比较黑)。通过比较输入图像的亮度总和和这两个总和,你就可以大致估算出壶里咖啡的百分比。

不过,我不敢保证这个方法的准确性,甚至在每秒之间的波动可能也会很大 :)

注意:在我的例子中,绿色的像素列应该延伸到壶的底部;我只是给出了我想表达的意思的一个例子。

撰写回答