我有两个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那样更快地获得正确的结果?