使用摄像头分析车库门状态



我想使用来自IP摄像机的图像来记录我的车库门是打开还是关闭(甚至可能介于两者之间(。 我认为在门上放置一些可识别的标记,然后以编程方式"读取"它们的位置很简单,但我没有图像处理经验,因此不知道它叫什么。 经过大量阅读,我的猜测是我需要以某种方式使用 Emgu CV(我用 C# 编码(。

有人可以指出我正确的开始方向吗? 对于我想要实现的目标,正确的方法是什么?斑点跟踪?

我知道这很旧,但我最近碰巧这样做了。

我有一部旧智能手机,可以从中远程启用LED闪光灯+拍照并下载。我在车库门的特定位置安装了一个闪亮的反光板,然后将智能手机钻到墙上。

我用python实现。我通过HTTP下载图片,经过几次尝试后,我确定了在哪里裁剪整个图片。然后我计算亮度,这往往表明有效检测高于 150(当反射器在这里时通常是 200,当它不亮但亮着时为 130,当反射器不在这里并且灯关闭时为 10(。

def loadFromCam(url):
print("GET " + baseUrl + url)
return requests.get(baseUrl + url, timeout=(10,10))
def brightness(im):
stat = ImageStat.Stat(im)
return stat.rms[0]
def loadImage():
response = loadFromCam("cam/1/frame.jpg")
f = open(destination + 'frame.jpg', 'wb')
f.write(response.content)
f.close()
return Image.open(BytesIO(response.content))
def cropImage(img):
left = 365
top = 400
right = 410
bottom = 435
return img.crop((left, top, right, bottom))
def toggleLed():
loadFromCam("cam/1/led_toggle")

然后如何使用它:

toggleLed()
time.sleep(0.1)
image = loadImage()
toggleLed()
crop = cropImage(image)
crop.save(destination + "crop.jpg")
print("brightness:", brightness(crop))

结果是两个文件(全图和裁剪(和亮度量。

注意:我刚开始Python,所以这可能很丑陋或不是推荐的做法

最新更新