gpt4 book ai didi

python - 没有临时 img 的 Opencv cv2.absdiff(img1, img2).sum()

转载 作者:太空狗 更新时间:2023-10-30 01:09:00 25 4
gpt4 key购买 nike

是否可以在没有临时 img 的情况下计算 cv2.absdiff(img1, img2).sum() ?

我有一个视频流,我需要在处理开始时进行某种图像稳定。absdiff 在使用以下两个图像检查不同的放置向量时给出了快速且依赖于错误的结果,但我必须创建、写入和读取一个临时图像,其中一个仅用于计算 img.sum()。所以去掉这些内存分配、写入和读取的步骤就好了。

def calcMatch(img1, img2):
diff = cv2.absdiff(img1, img2)
return diff.sum()

python中的解决方案

import cv2
import time

img = cv2.imread('test.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img1 = img[10:330, 10:870]
img2 = img[20:340, 20:880]

start = time.clock()
d = cv2.absdiff(img1, img2)
s = d.sum()
t = time.clock() - start
print 'with absdiff ', t
print s

start = time.clock()
s = cv2.norm(img1, img2, cv2.NORM_L1)
t = time.clock() - start
print 'with norm L1 ', t
print s

它在我的笔记本电脑上以非常稳定的比率提供了显着的速度:
与 absdiff 0.00207574457822
4315120
标准 L1 0.000226647018223
4315120.0

最佳答案

尝试 norm具有 NORM_L1 规范的功能。 C++代码:

double res = cv::norm(img1, img2, cv::NORM_L1);

关于python - 没有临时 img 的 Opencv cv2.absdiff(img1, img2).sum(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17829092/

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