前几天把网上找的一个检测抓取框的代码改成ROS node发现结果一直很离谱,抓取框坐标比图片还大,今天突然想起来又看了看代码,发现了问题出在tf.image.convert_image_dtype(image, dtype)
这个函数在进行类型转换时自动的scale上。
这个是我一开始写的用来读取png或者jpg图片,然后输入到网络里的代码:
def image_input(image_path):
height =224
width = 224
image = tf.image.decode_png(tf.read_file(image_path), channels=3)
image = tf.image.convert_image_dtype(image, dtype=tf.float32)
image = tf.image.resize_images(image, [height,width])
return image
这里tf.image.decode_png
得到的是uint8格式,范围在0-255之间,经过convert_image_dtype
就会被转换为区间在0-1之间的float32