在进行图像解码过程中,运行如下代码
import tensorflow as tf
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname='Library/Fonts/Songti.tcc', size=20)
font = FontProperties(fname='Library/Fonts/Songti.tcc', size=20)
tf.keras.backend.clear_session()
print("Tensorflow:{}".format(tf.__version__))
def image_decode(image_path):
img_bytes = tf.io.read_file(image_path)
img_b64 = tf.io.encode_base64(img_bytes)
img_b64 = tf.io.decode_base64(img_b64)
img_matrix = tf.io.decode_image(img_b64)
return img_matrix
def image_show(image_matrix):
plt.imshow(image_matrix)
plt.title("网络安全Base 64图像", fontproperties=font)
plt.savefig("F:/zwb/PyCharmProjects/LetNet5/websafe_b64.png", format="png", dpi=300)
plt.show()
if __name__ == "__main__":
image_path = "F:/zwb/PyCharmProjects/LetNet5/swimming_monkey.jpg"
img_matrix = image_decode(image_path)
image_show(img_matrix)
print(img_matrix)
发现结果错误,即:
FileNotFoundError: [Errno 2] No such file or directory: 'F:\\zwb\\PyCharmProjects\\LetNet5\\Library\\Fonts\\Songti.tcc'
如何解决?
方法:因为字体库路径错误,更改为系统字体库路径,即:
C:\Windows\Fonts\msyh.tcc #注意,在python中,要将‘\’改为‘/’,其中msyh.tcc是微软雅黑字体。
更改之后,运行代码,如下:
import tensorflow as tf
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyh.ttc', size=20)
font = FontProperties(fname='C:/Windows/Fonts/msyh.ttc', size=20)
tf.keras.backend.clear_session()
print("Tensorflow:{}".format(tf.__version__))
def image_decode(image_path):
img_bytes = tf.io.read_file(image_path)
img_b64 = tf.io.encode_base64(img_bytes)
img_b64 = tf.io.decode_base64(img_b64)
img_matrix = tf.io.decode_image(img_b64)
return img_matrix
def image_show(image_matrix):
plt.imshow(image_matrix)
plt.title("网络安全Base 64图像", fontproperties=font)
plt.savefig("F:/zwb/PyCharmProjects/LetNet5/websafe_b64.png", format="png", dpi=300)
plt.show()
if __name__ == "__main__":
image_path = "F:/zwb/PyCharmProjects/LetNet5/swimming_monkey.jpg"
img_matrix = image_decode(image_path)
image_show(img_matrix)
print(img_matrix)
结果,图片显示正常:
图像矩阵数据也显示正常: