首页 > 解决方案 > 更改 numpy 数组中的值需要很长时间

问题描述

我有一个函数,可以将二进制图像 [True, False] 转换为灰度图像 [0, 255],以便它们可用于 opencv 函数。但是,我发现这个特定的功能几乎花费了最长的时间。有没有办法优化这个功能?

def change_image(image):
  unique_values = np.unique(image)
  mean_unique = np.mean(unique_values)

  if 255 in unique_values:
      threshold_image = image > mean_unique
      return threshold_image

  if True in image:
      image = np.where(image==False, 0, 255)
      return image

  else:
      return image

标签: pythonnumpyopencv

解决方案


要将二值图像转换为灰度图像,请将整个图像乘以 255,以便 [0, 1] 映射到 [0, 255]。

此外,灰度图像可能不包含 255,因此该条件255 in unique_values不是可靠的测试。


推荐阅读