07_TensorFlow2图像编解码大揭秘:让图片说‘变’就‘变’,魔法还是科技?

2024-09-06 13:44

本文主要是介绍07_TensorFlow2图像编解码大揭秘:让图片说‘变’就‘变’,魔法还是科技?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

1. 图像的编码和解码

在实际应用中,图像数据源格式多种多样,如:png\jpg\bmp等,而神经网络训练模型所需的图像的数据格式为:图像字节数据或Base64编码数据等。基于此,将png\jpg\bmp等格式的图像转换为字节数据的过程称为图像编码,将字节数据的图像转换为png\jpg\bmp等格式图像的过程称为图像解码。

2. 图像编码

Tensorflow图像编码的过程如下图所示,分为3个过程:转换为字节数据、转为网络安全Base64数据、标准Base64数据。接下来对这三个过程一一解析。

在这里插入图片描述

2.1 转换为字节数据

通俗的讲,png\jpg\bmp等格式的图像转换为字节数据就是图像读取。tensorflow常用的图像读取函数为:tf.io.read_file和tf.io.gfile.

import tensorflow as tf
import os# 获取当前工作目录
# print(os.getcwd())
image_path = "./images/tfos_logo.png"
image_bytes = tf.io.read_file(image_path)
print("图像字节数据:{}".format(image_bytes))

2.2 转为网络安全 Base64 编码

网络安全的base64编码数据使用“-”代替“+”,使用“_”代替“/”,以保证数据在网络传输过程中的正确性。

image_s64=tf.io.encode_base64(image_bytes)
image_s64=format(image_s64)[2:-1]
print("网络安全的Base64编码:{}".format(image_s64))

2.3 转为标准 Base64 编码

标准的Base64数据中的“+”和“/”在网络中会被转换为“%XX”格式,而“%”在数据存储时必须进行转换。因此,标准Base64编码与网络安全的Base64编码之间的相互转换就是替换其中的不同之处即可。但是,需要注意的一点是:标准的Base64编码的数据大小是4的整数倍,不足的部分需要像卷积网络中的padding一样,用“=”补齐,已达到4的整数倍。

image_b64 = list(image_s64)
image_b64_lis = []
for i in range(len(image_b64)):
# - 替换为+if image_b64[i] == "-":image_b64_lis.append("+")elif image_b64[i] == "_":    # _替换为/image_b64_lis.append("/")else:image_b64_lis.append(image_b64[i])
# 不足4倍数的使用=填充
if len(image_b64_lis) % 4 == 0:pass
else:remainder = len(image_b64_lis) % 4for j in range(remainder):image_b64_lis.append("=")
image_b64 = "".join(image_b64_lis)
print("标准Base64编码:{}".format(image_b64))

3. 图像解码

Tensorflow中图像解码的过程与图像编码的格式正好相反,如图所示。

在这里插入图片描述

在Tensorflow中,图像数据处理是基于图像矩阵数据进行的,因此解码过程需要将字节数据转换为矩阵数据。

3.1 标准 Base64 解码转网络安全 Base64 数据

import tensorboard
import tensorflow as tf
import base64
from tensorflow.keras import Sequential, layers, losses, optimizers, datasets
import datetime
import matplotlib.pyplot as plt#
image_path= "./images/tfos_logo.png"
with open(image_path,"rb")as f:image_data = f.read()# 图像文件编码为标准base64字节image_standard_b64_bytes = base64.b64encode(image_data)# 标准base64字节转换为字符串image_standard_b64_str = image_standard_b64_bytes.decode("utf8")# 标准base64字符串转为列表standard_b64_list = list(image_standard_b64_str)# 网络安全base64编码列表websafe_b64_list = []for i in range(len(standard_b64_list)):# /替换为_if standard_b64_list[i] == "/":websafe_b64_list.append("_")# +替换为-elif standard_b64_list[i] == "+":websafe_b64_list.append("-")# 剔除=elif standard_b64_list[i] == "=":breakelse:websafe_b64_list.append(standard_b64_list[i])# 网络安全base64列表转为字符串websafe_b64_str = "".join(websafe_b64_list)
web_b64_tensor = tf.convert_to_tensor(websafe_b64_str)
web_b64_decode = tf.io.decode_base64(web_b64_tensor)
image_matrix = tf.io.decode_image(web_b64_decode)
plt.imshow(image_matrix)
plt.show()

在这里插入图片描述

3.2 网络安全的 Base64 编码解码

import tensorflow as tf
import matplotlib.pyplot as plt
image_path="./images/tfos_logo.png"
# 图像读取
image_bytes = tf.io.read_file(image_path)
image_b64 = tf.io.encode_base64(image_bytes)
image_b64 = tf.io.decode_base64(image_b64)
image_matrix = tf.io.decode_image(image_b64)
plt.imshow(image_matrix)
plt.show()

在这里插入图片描述

这篇关于07_TensorFlow2图像编解码大揭秘:让图片说‘变’就‘变’,魔法还是科技?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142165

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

揭秘世界上那些同时横跨两大洲的国家

我们在《世界人口过亿的一级行政区分布》盘点全球是那些人口过亿的一级行政区。 现在我们介绍五个横跨两州的国家,并整理七大洲和这些国家的KML矢量数据分析分享给大家,如果你需要这些数据,请在文末查看领取方式。 世界上横跨两大洲的国家 地球被分为七个大洲分别是亚洲、欧洲、北美洲、南美洲、非洲、大洋洲和南极洲。 七大洲示意图 其中,南极洲是无人居住的大陆,而其他六个大洲则孕育了众多国家和

三国地理揭秘:为何北伐之路如此艰难,为何诸葛亮无法攻克陇右小城?

俗话说:天时不如地利,不是随便说说,诸葛亮六出祁山,连关中陇右的几座小城都攻不下来,行军山高路险,无法携带和建造攻城器械,是最难的,所以在汉中,无论从哪一方进攻,防守方都是一夫当关,万夫莫开;再加上千里运粮,根本不需要打,司马懿只需要坚守城池拼消耗就能不战而屈人之兵。 另一边,洛阳的虎牢关,一旦突破,洛阳就无险可守,这样的进军路线,才是顺势而为的用兵之道。 读历史的时候我们常常看到某一方势

无线领夹麦克风什么牌子好用?揭秘领夹麦克风哪个牌子音质好!

随着短视频行业的星期,围绕着直播和视频拍摄的电子数码类产品也迎来了热销不减的高增长,其中除了数码相机外,最为重要的麦克风也得到了日益增长的高需求,尤其是无线领夹麦克风,近几年可谓是异常火爆。别看小小的一对无线麦克风,它对于视频拍摄的音质起到了极为关键的作用。 不过目前市面上的麦克风品牌种类多到让人眼花缭乱,盲目挑选的话容易踩雷,那么无线领夹麦克风什么牌子好用?今天就给大家推荐几款音质好的

负债不再是障碍?银行信贷“白名单“揭秘

谈及银行信贷产品,常闻有言称存在无需考量负债与查询记录之奇品,此等说法十有八九为中介诱人上钩之辞。轻信之下,恐将步入连环陷阱。除非个人资质出类拔萃,如就职于国央企或事业单位,工龄逾年,五险一金完备,还款能力卓越,或能偶遇线下产品对查询记录稍显宽容,然亦非全然无视。宣称全然不顾者,纯属无稽之谈。 银行非慈善机构,不轻易于困境中援手,更偏爱锦上添花之举。若无坚实资质,即便求助于银行亦难获青睐。反

从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展

【科技明说 | 科技热点关注】 2024戴尔科技峰会在8月如期举行,虽然因事未能抵达现场参加,我只是观看了网上在线直播,也未能采访到DTF现场重要与会者,但是通过数十年对戴尔的跟踪与观察,我觉得2024戴尔科技峰会给业界传递了6大重要信号。不妨简单聊聊:从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展? 1)退出中国的谣言不攻自破。 之前有不良媒体宣扬戴尔将退出中国的谣言,随着2

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

Spring MVC 图片上传

引入需要的包 <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-