【发布时间】:2018-08-01 06:58:18
【问题描述】:
我正在转换一些图像转换代码以使用 tensorflow。
我的图像作为 base64 字符串传入。使用以下函数,可以将 base64 字符串解码并作为 np.array 打开:
def load_color_image_base64(image_base64):
img_pil = Image.open(BytesIO(base64.b64decode(image_base64))).convert("RGB")
return np.array(img_pil)
但是,当我将相同的字符串传递给以下 tensorflow 代码时,会出现错误:
self._image = tf.image.decode_jpeg(tf.decode_base64(self._image_b64), channels=3)
我得到的错误是:
tf.decode_base64(self._image_b64), 通道=3) 文件“/Users/jameskelly/anaconda/envs/im2volume/lib/python2.7/site-packages/tensorflow/python/ops/gen_string_ops.py”,第 106 行,在 decode_base64 “DecodeBase64”,输入=输入,名称=名称) _apply_op_helper 中的文件“/Users/jameskelly/anaconda/envs/im2volume/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py”,第 787 行 op_def=op_def) 文件“/Users/jameskelly/anaconda/envs/im2volume/lib/python2.7/site-packages/tensorflow/python/framework/ops.py”,第 2956 行,在 create_op op_def=op_def) 文件“/Users/jameskelly/anaconda/envs/im2volume/lib/python2.7/site-packages/tensorflow/python/framework/ops.py”,第 1470 行,在 __init__ self._traceback = self._graph._extract_stack() # pylint: disable=protected-access InvalidArgumentError(参见上面的回溯):在 base64 中发现无效字符。 [[节点:DecodeBase64 = DecodeBase64[_device="/job:localhost/replica:0/task:0/device:CPU:0"](_arg_Placeholder_2_0_2)]]需要注意的是,这段代码是在一个flask api的后面。当我直接运行该类,从磁盘加载图像并将其直接转换为 base64 时,两种情况都有效。
我还将base64字符串转换为pythonstr类型,因为它是作为unicode传入的,错误消息没有改变。
【问题讨论】:
-
请您添加一个您正在传递并导致错误的base64编码图像的示例输入。
-
另请参阅文档:tensorflow.org/versions/master/api_docs/python/tf/decode_base64;它说你需要通过 « web-safe » base64,它不同于普通的 base64 替换冒号 « : » 和斜线 « / » 带有破折号和下划线的符号。
标签: python tensorflow base64