TypeError: Expected binary or unicode string, got <tf.Tensor ‘EncodeJpeg:0’ shape=() dtype=string>

今天在编写python的tensorflow 的图像处理脚本时,报错如下:

TypeError: Expected binary or unicode string, got <tf.Tensor 'EncodeJpeg:0' shape=() dtype=string>

我的原始脚本信息如下:

# -*- coding:utf-8 -*-

import tensorflow as tf

# 读取图片原始数据
image_raw_data = tf.gfile.FastGFile('./rose.jpg').read()

with tf.Session() as sess:
    # 解码
    image_data = tf.image.decode_jpeg(image_raw_data)
    # 转换数据类型为实数类型
    image_data = tf.image.convert_image_dtype(image_data, dtype=tf.float32)

    # 对图片进行按比例缩放,tf.image.central_crop函数可以对图片进行按比例缩放
    # 第一个参数是原始图像,第二个参数为缩放比例,比例范围(0, 1]
    central_cropped = tf.image.central_crop(image_data, 0.3)

    # 将数据类型转化回整数型
    central_cropped = tf.image.convert_image_dtype(central_cropped, dtype=tf.uint8)

    # 对转化后的图像进行编码
    encoded_central_cropped = tf.image.encode_jpeg(central_cropped.eval())

    # 将图像输出成.jpg文件
    with tf.gfile.GFile("./central_cropped_rose.jpg", "wb") as f:
        f.write(encoded_central_cropped)

问题就出在最后一行:

 f.write(encoded_central_cropped)

这里需要改成:

 f.write(encoded_central_cropped.eval())

这个问题导致就是因为f.write方法接收的是二进制数据或者是unicode字符串,而我刚开始没有调用eval()方法,所以传入的是一个tensorflow张量类型。

Copyright © 2017 - 2025 boboidea.com All Rights Reserved 波波创意软件工作室 版权所有 【转载请注明出处】