TF之p2p:基于TF利用p2p模型部分代码实现提高图像的分辨率
【摘要】 TF之p2p:基于TF利用p2p模型部分代码实现提高图像的分辨率
目录
一、tfimage.py文件功能解释
二、process.py添加一个新操作
一、tfimage.py文件功能解释
1、此处的create_op就调用了tf.get_default_session().run()方法,可以将Tensor 操作的函数转变为对N...
TF之p2p:基于TF利用p2p模型部分代码实现提高图像的分辨率
目录
一、tfimage.py文件功能解释
1、此处的create_op就调用了tf.get_default_session().run()方法,可以将Tensor 操作的函数转变为对Numpy 数组操作的函数,转换后的函数输出为Numpy的数组,而不是Tensor。例如,下面的decode_jpeg和decode_png。
-
def create_op(func, **placeholders):
-
op = func(**placeholders)
-
-
def f(**kwargs):
-
feed_dict = {}
-
for argname, argvalue in kwargs.items():
-
placeholder = placeholders[argname]
-
feed_dict[placeholder] = argvalue
-
return tf.get_default_session().run(op, feed_dict=feed_dict)
-
-
return f
-
-
-
decode_jpeg = create_op(
-
func=tf.image.decode_jpeg,
-
contents=tf.placeholder(tf.string),
-
)
-
-
decode_png = create_op(
-
func=tf.image.decode_png,
-
contents=tf.placeholder(tf.string),
-
)
2、tfimage.py里使用decode_jpeg和deco de_png定义了一个load函数。load函数的输入是一个图片文件路径,返回的是numpy. ndarray 形式的图像数据。
-
def load(path):
-
with open(path, "rb") as f:
-
contents = f.read()
-
-
_, ext = os.path.splitext(path.lower())
-
-
if ext == ".jpg":
-
image = decode_jpeg(contents=contents)
-
elif ext == ".png":
-
image = decode_png(contents=contents)
-
else:
-
raise Exception("invalid image suffix")
-
-
return to_float32(image=image)
3、还利用create_op函数定义了若干函数
-
rgb_to_grayscale = create_op(
-
func=tf.image.rgb_to_grayscale,
-
images=tf.placeholder(tf.float32),
-
)
-
-
……
-
-
crop = create_op(
-
func=tf.image.crop_to_bounding_box,
-
image=tf.placeholder(tf.float32),
-
offset_height=tf.placeholder(tf.int32, []),
-
offset_width=tf.placeholder(tf.int32, []),
-
target_height=tf.placeholder(tf.int32, []),
-
target_width=tf.placeholder(tf.int32, []),
-
)
-
-
pad = create_op(
-
func=tf.image.pad_to_bounding_box,
-
image=tf.placeholder(tf.float32),
-
offset_height=tf.placeholder(tf.int32, []),
-
offset_width=tf.placeholder(tf.int32, []),
-
target_height=tf.placeholder(tf.int32, []),
-
target_width=tf.placeholder(tf.int32, []),
-
)
二、process.py添加一个新操作
1、process.py 的主处理函数process 使用了上述load 函数读入图片,接着做了一些处理后保存。
-
def process(src_path, dst_path):
-
src = im.load(src_path)
-
-
if a.operation == "grayscale":
-
dst = grayscale(src)
-
elif a.operation == "resize":
-
dst = resize(src)
-
elif a.operation == "blank":
-
dst = blank(src)
-
elif a.operation == "combine":
-
dst = combine(src, src_path)
-
elif a.operation == "edges":
-
dst = edges(src)
-
elif a.operation == "blur":
-
dst = blur(src)
-
else:
-
raise Exception("invalid operation")
-
-
im.save(dst, dst_path)
2、添加新的函数
文章来源: yunyaniu.blog.csdn.net,作者:一个处女座的程序猿,版权归原作者所有,如需转载,请联系作者。
原文链接:yunyaniu.blog.csdn.net/article/details/82974884
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)