【tensorflow 读取图片方式】本地文件名读取以及url方式读取

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。人工智能教程

图片存在形式,一般是本地文件夹xxx.jpg。xxx.png.或者是url方式,https://timgsa.baidu.com/timg? 类似这两种。

那么tensorflow 是如何读取这两种图片的呢。下面将会讲解。

本地图片读取可以用 tf.read_file()和tf.image.decode_jpeg() 两个函数。
或者tf.gfile.FastGFile() 和tf.image.decode_jpeg() 两个函数。

# -*- encoding=utf-8 -*-
# author:dongli


import matplotlib.pyplot as plt
import tensorflow as tf

#-------------------方式1:本地读取图片----------------
# 读入本地文件图片
image_raw = tf.gfile.FastGFile('F:/img_spam/test/3.jpg', 'rb').read()
# 解码为tf中的图像格式
img = tf.image.decode_jpeg(image_raw,channels=3)  # Tensor

# -------------------方式2:本地读取图片----------------

#image_value = tf.read_file('F:/img_spam/test/3.jpg')
#img = tf.image.decode_jpeg(image_value, channels=3)




with tf.Session() as sess:
    img_ = img.eval()
    print(img_.shape)

plt.figure(1)
plt.imshow(img_)
plt.show()

url方式图片读取,只需要用到requests.get(image_url).content和 tf.image.decode_jpeg(image_data, channels=3,name=‘jpeg_reader’)即可。

#------------------以url方式读取----------------------
import requests
import tensorflow as tf

image_url="https://timgsa.baidu.com/xxxxx.jpg"
image_data=requests.get(image_url).content
print(image_data)
img = tf.image.decode_jpeg(image_data, channels=3,name='jpeg_reader')
print(img)

模型加载,以及图片读取预处理代码。

# -*- encoding=utf-8 -*-
# author:dongli

import tensorflow as tf




def load_graph(model_file):

    """
    :param model_file: 加载模型文件output_graph.pb
    :return: 图模型
    """
    graph = tf.Graph()
    graph_def = tf.GraphDef()
    with open(model_file, "rb") as f:
        graph_def.ParseFromString(f.read())
        with graph.as_default():
            tf.import_graph_def(graph_def)
    return graph

def load_labels(label_file):
    """
    :param label_file: 加载分类标签文件output_labels.txt
    :return: 返回预测标签
    """
    label = []
    proto_as_ascii_lines = tf.gfile.GFile(label_file).readlines()
    for l in proto_as_ascii_lines:
        label.append(l.rstrip())
    return label



def read_tensor_from_image_file(file_name, input_height=299, input_width=299,input_mean=0, input_std=255):

    """
    :param file_name: 文件名称
    :param input_height:输入图片高度
    :param input_width:输入图片宽度
    :param input_mean:输入均值
    :param input_std:输入方差
    :return:以文件名方式读取图片
    """
    file_reader = tf.read_file(file_name)
    if file_name.endswith(".png"):
        image_reader = tf.image.decode_png(file_reader, channels = 3, name='png_reader')
    elif file_name.endswith(".gif"):
        image_reader = tf.squeeze(tf.image.decode_gif(file_reader,name='gif_reader'))
    elif file_name.endswith(".bmp"):
        image_reader = tf.image.decode_bmp(file_reader, name='bmp_reader')
    else:
        image_reader = tf.image.decode_jpeg(file_reader, channels = 3,name='jpeg_reader')

    float_caster = tf.cast(image_reader, tf.float32)
    dims_expander = tf.expand_dims(float_caster, 0)
    resized = tf.image.resize_bilinear(dims_expander, [input_height, input_width])
    normalized = tf.divide(tf.subtract(resized, [input_mean]), [input_std])
    sess = tf.Session()
    result = sess.run(normalized)
    return result







def read_tensor_from_image_data(image_data, input_height=299, input_width=299,input_mean=0, input_std=255):

    """
    :param file_name: 文件名称
    :param input_height:输入图片高度
    :param input_width:输入图片宽度
    :param input_mean:输入均值
    :param input_std:输入方差
    :return:以文件内容byte方式读取图片
    """
    image_reader = tf.image.decode_jpeg(image_data,channels = 3,name='jpeg_reader')
    float_caster = tf.cast(image_reader, tf.float32)
    dims_expander = tf.expand_dims(float_caster, 0)
    resized = tf.image.resize_bilinear(dims_expander, [input_height, input_width])
    normalized = tf.divide(tf.subtract(resized, [input_mean]), [input_std])
    sess = tf.Session()
    result = sess.run(normalized)
    return result


tensorflow 官方教程函数大全可参考

https://www.w3cschool.cn/tensorflow_python/
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页