首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >加快两幅图像的差值

加快两幅图像的差值
EN

Stack Overflow用户
提问于 2020-05-17 19:37:06
回答 1查看 76关注 0票数 0

我有两个图像作为numpy数组,每个图像是180x180,并且有R、G、B值,总共有97200个值。我遍历每个像素和每个R,G,B;计算对应的两个像素之间的差值,并将其加到一个整数。大约需要5秒。我怎样才能加快手术速度?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-17 20:38:40

使用numpy,您可以直接完成它

代码语言:javascript
运行
复制
result = (array1 - array2).sum()

你也只能在一个方向上计算。

代码语言:javascript
运行
复制
result = (array1 - array2).sum(axis=0)

result = (array1 - array2).sum(axis=1)

result = (array1 - array2).sum(axis=2)

在我的旧计算机上的图像800x600,它需要大约0.003秒。

cv2示例,它将图像作为numpy数组提供。

代码语言:javascript
运行
复制
import cv2
import time

img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')

print('shape:', img1.shape)

start = time.time()

result = (img1 - img2).sum()

end = time.time()

print('result:', result)
print('  time:', end-start)

编辑:带有图像的 numpy数组可以使用数据类型uint8,它只能使用值0..255,因此1-2可以给出254而不是-1。您可以将数据转换为int,以获得负值和-1,而不是254。然后,您可以使用abs()**2将负值转换为正值,以在均方误差中创建正确的和样。

代码语言:javascript
运行
复制
print(img1.dtype, img1.dtype)

img1 = img1.astype(int)
img2 = img2.astype(int)

diff = img1 - img2
print( diff.sum() )
print( (diff**2).sum() )
print( np.abs(diff).sum() )

所有这些计算仍然是快速的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61857699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档