首页 > 解决方案 > 增强图像由空数组组成,而原始图像由具有值的数组组成。为什么会这样?

问题描述

我将文件夹中所有 .png 图像的扩展名更改为 .jpeg ,并将它们重命名为使用此代码,

# Define directories

INPUT = 'input dir'
OUTPUT = 'output dir'

for count, filename in enumerate(os.listdir(INPUT)):
    dst = "OTHERS_IMG_" + str(count) + ".jpeg"
    src = INPUT + filename 
    dst = OUTPUT + dst 
    os.rename(src, dst) 

我在这样的单独文件夹中成功地获得了正确格式的图像。NORMAL_IMG_0 NORMAL_IMG_1 NORMAL_IMG_2 。. .

但是在使用 OpenCV 和 imgaug 扩充和读取图像之后,我使用这段代码得到了这样的空数组,

image = cv2.imread('NORMAL/NORMAL_IMG_0.jpeg')
rotate = iaa.Affine(rotate=(-25, 25))
image_rotated = rotate.augment_images([image])[0]
cv2.imwrite("image.jpeg", image_rotated)

我懂了,

[[[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

 ...

 [[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]]

虽然原图是这样的,

[[[ 55  33  21]
  [ 47  25  13]
  [ 52  30  18]
  ...
  [ 27  18  28]
  [ 29  20  30]
  [ 29  21  28]]

 [[ 81  58  43]
  [ 77  54  39]
  [ 82  59  44]
  ...
  [ 25  18  25]
  [ 26  19  26]
  [ 26  19  26]]

 [[100  74  57]
  [100  74  57]
  [101  75  58]
  ...
  [ 24  18  23]
  [ 24  18  23]
  [ 24  18  23]]

 ...

 [[ 32  29  31]
  [ 30  25  27]
  [ 31  25  26]
  ...
  [ 61  37  31]
  [ 61  37  31]
  [ 61  37  31]]

 [[ 30  27  29]
  [ 29  26  28]
  [ 30  25  27]
  ...
  [ 49  28  26]
  [ 48  27  25]
  [ 48  27  25]]

 [[ 28  27  29]
  [ 29  26  28]
  [ 28  25  27]
  ...
  [ 40  22  21]
  [ 39  21  20]
  [ 39  21  20]]]

谁能帮我为什么会这样?我还想增加我所有的图像。直到我尝试在目录中增加JPEG格式的图像时,我才注意到这一点。

标签: pythonopencvimage-processingdeep-learningdata-augmentation

解决方案


不要更改扩展名,而是尝试将它们编写为带有 jpeg 扩展名的 jpeg 格式。JPEG不是PNG。您可以使用cv2.imread后跟cv2.imwrite,或 imagemagick 的转换实用程序。然后再试一次。


推荐阅读