gpt4 book ai didi

python - 使用OpenCV比较图像

转载 作者:行者123 更新时间:2023-12-02 17:06:42 31 4
gpt4 key购买 nike

我正在尝试使用OpenCV(和picamera)监视LCD读数。
我正在阅读每秒的内容,希望图像在至少三帧(3秒)内相同。只是为了避免在有电灯开关或某些物体干扰图像的情况下分析图像的情况。

因此,我连续读取三个图像并通过打印来计算它们之间的差异(img0,img1,img2是三个灰度连续图像):

> print(max(diff(img0,img1), diff(img1,img2), diff(img0, img2)))

哪里
> def diff(image1, image2):
> return abs(image1-image2).mean()

我还使用了 absdiff 函数,结果相似。
但是奇怪的是,当图像没有变化(对我来说是可见的)时,该值约为120-160。但是,当我关掉灯时,该值下降到110,然后又上升到220。当我用手指指着框架时,该值仍然可以在120-160范围内。我想不出一个有意义的真实模式。也许问题在于晃动和许多逐像素差异加起来。
有更聪明的方法吗?
我附上一些样本图片。
frame 1

frame 2

frame 3

最佳答案

可能是由于您要减去uint8类型的图像而导致的。任何负数将汇总为高值。例如,

> np.array([-3,-2,-1,0], dtype=np.uint8)
[253 254 255 0]

因此, image2函数中 image1大于 diff的任何像素都将具有较高的值。您可以先将其更改为float类型。使用前两个示例图像:
> print(diff(img0, img1))
209.93
> img0 = img0.astype(float)
> img1 = img1.astype(float)
> print(diff(img0, img1))
3.85

关于python - 使用OpenCV比较图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53127282/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com