小编ded*_*ede的帖子

两个uint8阵列的快速绝对差异

我有两个numpy数组dtype=np.uint8- 像这样:

img1=np.uint8(np.random.randint(0, 255, (480, 640)))
img2=np.uint8(np.random.randint(0, 255, (480, 640)))
Run Code Online (Sandbox Code Playgroud)

我想建立这些数组的积极差异.

这是我的前两个approches(以及第三个用于参考):

def differenceImageV1(img1, img2):
  diff=np.empty_like(img1)
  h, w=img1.shape
  for y in range(h):
    for x in range(w):
      if img1[y, x]<img2[y, x]: diff[y, x]=img2[y, x]-img1[y, x]
      else:                     diff[y, x]=img1[y, x]-img2[y, x]
  return(diff)

def differenceImageV2(img1, img2):
  return(np.uint8(np.absolute(np.int16(img1)-np.int16(img2))))

def differenceImageV3(img1, img2):  # fast - but wrong result
  return(img1-img2)
Run Code Online (Sandbox Code Playgroud)

我得到了这些执行时间(以及要检查的总和,如果它们相等):

  10x: 1893.54 ms  np.sum=26122208
1000x:  411.71 ms  np.sum=26122208
1000x:   26.60 ms  np.sum=39123624
Run Code Online (Sandbox Code Playgroud)

有没有办法像V2那样更快地获得正确的结果?

python numpy

11
推荐指数
2
解决办法
2587
查看次数

标签 统计

numpy ×1

python ×1