TensorFlow的resize使用OpenCV实现

TensorFlow的resize使用OpenCV实现

slim是TensorFlow自带的模型,模型训练数据使用的是TensorFlow自带的图片处理格式,如果将slim模型转化为其他模型,比如onnx模型,在inference实现时需要对图片进行预处理,这样会导致对TensorFlow有强依赖性,进而导致其他推理框架需要TensorFlow的图片预处理函数。
为了解决上述问题,实现了使用OpenCV实现同等的效果的图片预处理。

import tensorflow as tf
import imageio
import cv2

#TensorFlow代码实现
def deal_image_func(image_path):

    with open(image_path, 'rb') as f:
        image_buff = f.read()
        img = imageio.imread(image_buff)

    return img

image_size = 224
image_data = deal_image_func('image/5656_plane.jpg')
#本人使用的是TensorFlow2.4版本,如果使用TensorFlow1.版本的话,请使用tf.image.resize_images方法
image_data = tf.compat.v1.image.resize_images(image_data, size=[image_size, image_size]).numpy()
print("tensorFlow result: ")
print(image_data.shape)
print(image_data)
print("\n\n\n")


#opencv代码实现
original_image = cv2.imread('image/5656_plane.jpg')
original_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB)
image_data = cv2.resize(original_image, (image_size, image_size))
print("opencv result: ")
print(image_data.shape)
print(image_data)
tensorFlow result: 
(224, 224, 3)
[[[195.      195.      195.     ]
  [195.      195.      195.     ]
  [195.      195.      195.     ]
  ...
  [146.      146.      146.     ]
  [146.      146.      146.     ]
  [146.      146.      146.     ]]

 [[194.      194.      194.     ]
  [193.93878 193.93878 193.93878]
  [193.87755 193.87755 193.87755]
  ...
  [146.42857 146.42857 146.42857]
  [146.42857 146.42857 146.42857]
  [146.42857 146.42857 146.42857]]

 [[193.      193.      193.     ]
  [192.87755 192.87755 192.87755]
  [192.7551  192.7551  192.7551 ]
  ...
  [146.85715 146.85715 146.85715]
  [146.85715 146.85715 146.85715]
  [146.85715 146.85715 146.85715]]

 ...

 [[165.      165.      165.     ]
  [163.42857 163.42857 163.42857]
  [161.85715 161.85715 161.85715]
  ...
  [194.      194.      194.     ]
  [194.      194.      194.     ]
  [194.      194.      194.     ]]

 [[165.      165.      165.     ]
  [163.42857 163.42857 163.42857]
  [161.85715 161.85715 161.85715]
  ...
  [194.      194.      194.     ]
  [194.      194.      194.     ]
  [194.      194.      194.     ]]

 [[165.      165.      165.     ]
  [163.42857 163.42857 163.42857]
  [161.85715 161.85715 161.85715]
  ...
  [194.      194.      194.     ]
  [194.      194.      194.     ]
  [194.      194.      194.     ]]]




opencv result: 
(224, 224, 3)
[[[195 195 195]
  [195 195 195]
  [195 195 195]
  ...
  [146 146 146]
  [146 146 146]
  [146 146 146]]

 [[195 195 195]
  [195 195 195]
  [195 195 195]
  ...
  [146 146 146]
  [146 146 146]
  [146 146 146]]

 [[195 195 195]
  [195 195 195]
  [195 195 195]
  ...
  [146 146 146]
  [146 146 146]
  [146 146 146]]

 ...

 [[165 165 165]
  [165 165 165]
  [165 165 165]
  ...
  [194 194 194]
  [194 194 194]
  [194 194 194]]

 [[165 165 165]
  [165 165 165]
  [165 165 165]
  ...
  [194 194 194]
  [194 194 194]
  [194 194 194]]

 [[165 165 165]
  [165 165 165]
  [165 165 165]
  ...
  [194 194 194]
  [194 194 194]
  [194 194 194]]]

你可能感兴趣的:(图片预处理,tensorflow,opencv)