美文网首页码农的世界python热爱者我爱编程
忘记关烤箱了是什么鬼?用Python和OpenCV 来帮你关烤箱

忘记关烤箱了是什么鬼?用Python和OpenCV 来帮你关烤箱

作者: Python树苗 | 来源:发表于2018-05-27 15:59 被阅读5次

这个问题常常会在最不方便的时候出现在你的脑子里。

有时是当你刚刚走出家门的时候。 有时是当你在上班路上的时候。 有时是当你坐在飞机上准备度个长假的时候……

解决这个问题的方法是多种多样的:

橡皮筋的方法

大声说或唱出来(就像 Samuel L. Jackson 一样)

当你离开家去度假的时候,给烤箱在内的电器列个清单或做个标记。 或者,我们也许有更好的做法……

在本教程中,我们会尝试利用技术手段解决这个问题。

Github 里有完整代码。

当红色灯灭的时候,烤箱是关着的:

预备条件

确保你的电脑上安装了以下应用:

OpenCV 3.0

Python 2.7

Numpy 1.9

importargparse

importnumpy asnp

importcv2

载入图片

image = cv2.imread(image_path)

图片降噪

我们为了给图片降噪,需要对输入图片进行平滑处理。这样会更容易在图片中定位目标。使用 medianBlur 函数,把光圈大小定为 3 。数字越大意味着图像会越模糊。

blur_image = cv2.medianBlur(image, 3)

检测图片中的颜色

为了检测我们想要的颜色,我们可以查看烤箱灯图片中颜色的直方图。

我们可以看出,红色在图片中占统治地位。红色有两个高峰 —— 一个幅度高,一个幅度低。这些颜色值转变为色度范围从 0 到10,以及从 160 到 180 (针对红色)。

=

接下来把这些图片合并在一起,以抓取所有红色色度。

full_image = cv2.addWeighted(lower_red_hue,1.0,higher_red_hue,1.0,0.0)

结果如下:

发现图片中的圆圈

结果

此时就可以检查是否有圆圈了。如果有就意味着至少有一个烤箱灯亮着。如果找不到圆圈就意味着没有灯亮,烤箱关着。

为了证明此结论,我们可以用下述代码在原图中画圆圈:

# Draw the circles on the original image

circles = np.round(circles[0, :]).astype("int")

for(center_x,center_y,radius)incircles:

cv2.circle(image,(center_x,center_y),radius,(0,255,0),4)

结果如下:

欢迎大家关注我的博客或者公众号:https://home.cnblogs.com/u/Python1234/ Python学习交流

欢迎加入千人交流学习群:125240963

相关文章

网友评论

    本文标题:忘记关烤箱了是什么鬼?用Python和OpenCV 来帮你关烤箱

    本文链接:https://www.haomeiwen.com/subject/fjgbjftx.html