图像编码
import tensorflow as tf
import base64
if __name__ == "__main__":
path = "/Users/admin/Documents/111.jpeg"
img = tf.io.read_file(path)
print("图像字节编码:{}".format(img))
img1 = tf.io.gfile.GFile(path, 'rb')
print("图像字节编码:{}".format(img1.readlines()))
img_64 = tf.io.encode_base64(img)
img_64 = format(img_64)[2:-1]
print("网络安全Base_64编码:{}".format(img_64))
img_b64 = list(img_64)
img_b64_list = []
for i in range(len(img_b64)):
if img_b64[i] == "-":
img_b64_list.append("+")
elif img_b64[i] == "_":
img_b64_list.append("/")
else:
img_b64_list.append(img_b64[i])
if len(img_b64_list) % 4 != 0:
remainder = len(img_b64_list) % 4
for i in range(remainder):
img_b64_list.append("=")
img_b64 = "".join(img_b64_list)
print("标准Base_64编码:{}".format(img_b64))
with open(path, "rb") as f:
img3 = f.read()
img_stand_b64 = base64.b64encode(img3)
img_stand_b64_str = img_stand_b64.decode("utf8")
print("标准Base_64编码:{}".format(img_stand_b64_str))
img_w64 = list(img_stand_b64_str)
img_w64_list = []
for i in range(len(img_w64)):
if img_w64[i] == "+":
img_w64_list.append("-")
elif img_w64[i] == "/":
img_w64_list.append("_")
elif img_w64[i] == "=":
break
else:
img_w64_list.append(img_w64[i])
img_w64 = "".join(img_w64_list)
print("网络安全Base_64编码:{}".format(img_w64))
运行结果(部分截取)
图像字节编码:b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xfe\x00*Intel(R) JPEG Library, version 1,5,4,36\x00\xff\xdb\x00C\x00\x05\x03\x04\x04\x04\x03\x05\x04\x04\x04\x05\x05\x05\x06\x07\x0c\x08\x07\x07\x07\x07\x0f\x0b\x0b\t\x0c\x11\x0f\x12\x12\x11\x0f\x11\x11\x13\x16\x1c\x17\x13\x14\x1a\x15\x11\x11\x18!\x18\x1a\x1d\x1d\x1f\x1f\x1f\x13\x17"$"\x1e$\x1c\x1e\x1f\x1e\xff\xdb\x00C\x01\x05\x05\x05\x07\x06\x07\x0e\x08\x08\x0e\x1e\x14\x11\x14\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\xff\xc4\x01\xa2\x00\x00\x01\x05\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x10\x00\x02\x01\x03\x03\x02\x04\x03\x05\x05\x04\x04\x00\x00\x01}\x01\x02\x03\x00\x04\x11\x05\x12!1A\x06\x13Qa\x07"q\x142\x81\x91\xa1\x08#B\xb1\xc1\x15R\xd1\xf0$3br\x82\t\n\x16\x17\x18\x19\x1a%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\x83\x84\x85\x86\x87\x88\x89\x8a\x92\x93\x94\x95\x96\x97\x98\x99\x9a\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\x01\x00\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x11\x00\x02\x01\x02\x04\x04\x03\x04\x07\x05\x04\x04\x00\x01\x02w\x00\x01\x02\x03\x11\x04\x05!1\x06\x12AQ\x07aq\x13"2\x81\x08\x14B\x91\xa1\xb1\xc1\t#3R\xf0\x15br\xd1\n\x16$4\xe1%\xf1\x17\x18\x19\x1a&\'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x92\x93\x94
图像字节编码:b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xfe\x00*Intel(R) JPEG Library, version 1,5,4,36\x00\xff\xdb\x00C\x00\x05\x03\x04\x04\x04\x03\x05\x04\x04\x04\x05\x05\x05\x06\x07\x0c\x08\x07\x07\x07\x07\x0f\x0b\x0b\t\x0c\x11\x0f\x12\x12\x11\x0f\x11\x11\x13\x16\x1c\x17\x13\x14\x1a\x15\x11\x11\x18!\x18\x1a\x1d\x1d\x1f\x1f\x1f\x13\x17"$"\x1e$\x1c\x1e\x1f\x1e\xff\xdb\x00C\x01\x05\x05\x05\x07\x06\x07\x0e\x08\x08\x0e\x1e\x14\x11\x14\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\xff\xc4\x01\xa2\x00\x00\x01\x05\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\'
网络安全Base_64编码:_9j_4AAQSkZJRgABAQAAAQABAAD__gAqSW50ZWwoUikgSlBFRyBMaWJyYXJ5LCB2ZXJzaW9uIDEsNSw0LDM2AP_bAEMABQMEBAQDBQQEBAUFBQYHDAgHBwcHDwsLCQwRDxISEQ8RERMWHBcTFBoVEREYIRgaHR0fHx8TFyIkIh4kHB4fHv_bAEMBBQUFBwYHDggIDh4UERQeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHv_EAaIAAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCxAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4-Tl5ufo6erx8vP09fb3-Pn6AQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgsRAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5-jp6vLz9PX29_j5-v_AABEIBDgHgAMBEQACEQEDEQH_2gAMAwEAAhEDEQA_APqOS3yOlYygjiGRwbW6UowEX4lwM10QQXJ4zg1ZSJGGRRYttFS4zjIqZGLKwY85rILlO5fnFYyepJSmJxzWbQmVzzzWdiAXJaq5RouQLnBq4I0Rq2vAFdMSjSt8GtkUi4tDNUPzxSLIZjxTRLMq-YYIrCaJOU1RgGbmvOq7iktDCuRv71zNkOJTZfWkmZiFa1TIZBMh9Klk3K7rjmspBzETnis2y1ZhbP8APzQmUolxnB71aY-UiYmi4mhFcjFS7mMkW42OMitoPQxlct27ZXmruJMdKM1LkDRVkBzQtRWHx8rzVxjctMkSIZrTksUpFqLjHFNI0uWkbNVYpMJQWHSnY1iyvswc0WNUy_aKrAZoZpFllYlzWVjVDWAWi5ZBM-7oaNAKFyT2PNGhJUaRgetKwiMy56mpaEKjjNCQtR5bPNXylIktSTKAam4M6K2i3IMV1U9hWLMUTBq1CxdRXA70XYWK2oJKycEis6jYuVGd5Mmfmya5nfqWkMkh9qVhkDw8GpAytQgyDxTFYxLlWAzSAzpZWHGTUtjSJIJW9aaYza02RiOprS6CzN-1JIGaTGWCAetQ0MryxEZxUFIrOCKaYxoOBVIBhbmqEG7kUh2LMZzik2FizGM8ipuBYWImqSJFMDZziqC47yWK9K1ixEUiEDpV3EyrMvBzWEzOb0Ma7jPmc1hI45biwjbSSIuaEEuO9OxJP5wx1oGhrTN2NM2ih0UhJ61UTeJbgdia0NEX4fmwaCrFhRkVaAYyVdgIZFrJoCu61NiWiBxtbNSxFqCQFacWFidHP41qpFJEwmYd6rmQWHwSMzcmi47F2FeQaLCZpwrkCmkRclKHFNoV0QTLkYqWhGfcQ56io5SkzOnt8Z4pOBaZRmhFZyiWmVJExms5IdysYdzVNhFu1tR3FXFAjQgiCjFapDsLJFmraERPHhTWbRLM68QmsnEVhLCMhuRRGIrGvCgwMVqolEqLg0yrDpeRzSauSVmQ5rFw1ESBDtp8orETRjuKB8q6lO9tgVJArOUOphOCsc_ch4pCMEDNZp2OOUbMlhYtSvcEX9NtpLu6WFc-p-lVSpuUikjoL02dtarFtCsOVAHIrevyQXmdtKnzHK-IPF32WIwLcfMBjiuP2tSeh6lHDW1ZwWq6vd6hIcu-3ue2K2pUm9WdllEi05Ybdsuu8nqTmuiMiXE0vtK4x8uO2K0tcXKIJZZsrEhDe_StFYTRPa2Jl-eeT6jNWiC0FsbdwVKBj196TkUlcjm1eFCVjU_lWbmzSNPuZ9zr1yD-7VyPYUK5bp2KAvNYuZDsZlU9Ce1bQM5pFlbDWpcJJqEu08q2f61ucstzXtfDYu7ZU1QCYA5DhiGH4itEZyRtWnhjTUtlSRdw6KcnIqiLsnTQtOigfdahgAeRk5p3JY200zSi5hmsXbAyp2k5HtRzCNCGz04SBkgZZF6OM81cWTJF2aK08tXRGhlPBBztcehHTNDRKZhalb23WO72Nz5eT37qaEDucHrGo3elaghiHm2jn59pyYm9QPT_AApSjcpG3odw3mB4kVEY7mEY-U564q2Zt6m5qmol4vshk3SIm6Pn_WJjsfUf0NIDkLDW_O1CXS548zrzHv4DDr09apRuFyF4LGa6ljDNCrDEkL_w57j_ABqXApSM-70W_gYIwjvIW-66Eb09_eiKCUirHp9wpJt5p7O6U8jJCOPUUSRUHfctR61qtsRFqCmYIciUcSL6MD3xWehfod14P-IEMgWO4lYuh2tuGGx_UUmUj0rSdVhmbzImDhudy9_rimRKBdukgvd27DRN3HVG9fakJuyMx0ktY9zncqtgTDpj0b0q4
标准Base_64编码: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
标准Base_64编码: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
网络安全Base_64编码:_9j_4AAQSkZJRgABAQAAAQABAAD__gAqSW50ZWwoUikgSlBFRyBMaWJyYXJ5LCB2ZXJzaW9uIDEsNSw0LDM2AP_bAEMABQMEBAQDBQQEBAUFBQYHDAgHBwcHDwsLCQwRDxISEQ8RERMWHBcTFBoVEREYIRgaHR0fHx8TFyIkIh4kHB4fHv_bAEMBBQUFBwYHDggIDh4UERQeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHv_EAaIAAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCxAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4-Tl5ufo6erx8vP09fb3-Pn6AQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgsRAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5-jp6vLz9PX29_j5-v_AABEIBDgHgAMBEQACEQEDEQH_2gAMAwEAAhEDEQA_APqOS3yOlYygjiGRwbW6UowEX4lwM10QQXJ4zg1ZSJGGRRYttFS4zjIqZGLKwY85rILlO5fnFYyepJSmJxzWbQmVzzzWdiAXJaq5RouQLnBq4I0Rq2vAFdMSjSt8GtkUi4tDNUPzxSLIZjxTRLMq-YYIrCaJOU1RgGbmvOq7iktDCuRv71zNkOJTZfWkmZiFa1TIZBMh9Klk3K7rjmspBzETnis2y1ZhbP8APzQmUolxnB71aY-UiYmi4mhFcjFS7mMkW42OMitoPQxlct27ZXmruJMdKM1LkDRVkBzQtRWHx8rzVxjctMkSIZrTksUpFqLjHFNI0uWkbNVYpMJQWHSnY1iyvswc0WNUy_aKrAZoZpFllYlzWVjVDWAWi5ZBM-7oaNAKFyT2PNGhJUaRgetKwiMy56mpaEKjjNCQtR5bPNXylIktSTKAam4M6K2i3IMV1U9hWLMUTBq1CxdRXA70XYWK2oJKycEis6jYuVGd5Mmfmya5nfqWkMkh9qVhkDw8GpAytQgyDxTFYxLlWAzSAzpZWHGTUtjSJIJW9aaYza02RiOprS6CzN-1JIGaTGWCAetQ0MryxEZxUFIrOCKaYxoOBVIBhbmqEG7kUh2LMZzik2FizGM8ipuBYWImqSJFMDZziqC47yWK9K1ixEUiEDpV3EyrMvBzWEzOb0Ma7jPmc1hI45biwjbSSIuaEEuO9OxJP5wx1oGhrTN2NM2ih0UhJ61UTeJbgdia0NEX4fmwaCrFhRkVaAYyVdgIZFrJoCu61NiWiBxtbNSxFqCQFacWFidHP41qpFJEwmYd6rmQWHwSMzcmi47F2FeQaLCZpwrkCmkRclKHFNoV0QTLkYqWhGfcQ56io5SkzOnt8Z4pOBaZRmhFZyiWmVJExms5IdysYdzVNhFu1tR3FXFAjQgiCjFapDsLJFmraERPHhTWbRLM68QmsnEVhLCMhuRRGIrGvCgwMVqolEqLg0yrDpeRzSauSVmQ5rFw1ESBDtp8orETRjuKB8q6lO9tgVJArOUOphOCsc_ch4pCMEDNZp2OOUbMlhYtSvcEX9NtpLu6WFc-p-lVSpuUikjoL02dtarFtCsOVAHIrevyQXmdtKnzHK-IPF32WIwLcfMBjiuP2tSeh6lHDW1ZwWq6vd6hIcu-3ue2K2pUm9WdllEi05Ybdsuu8nqTmuiMiXE0vtK4x8uO2K0tcXKIJZZsrEhDe_StFYTRPa2Jl-eeT6jNWiC0FsbdwVKBj196TkUlcjm1eFCVjU_lWbmzSNPuZ9zr1yD-7VyPYUK5bp2KAvNYuZDsZlU9Ce1bQM5pFlbDWpcJJqEu08q2f61ucstzXtfDYu7ZU1QCYA5DhiGH4itEZyRtWnhjTUtlSRdw6KcnIqiLsnTQtOigfdahgAeRk5p3JY200zSi5hmsXbAyp2k5HtRzCNCGz04SBkgZZF6OM81cWTJF2aK08tXRGhlPBBztcehHTNDRKZhalb23WO72Nz5eT37qaEDucHrGo3elaghiHm2jn59pyYm9QPT_AApSjcpG3odw3mB4kVEY7mEY-U564q2Zt6m5qmol4vshk3SIm6Pn_WJjsfUf0NIDkLDW_O1CXS548zrzHv4DDr09apRuFyF4LGa6ljDNCrDEkL_w57j_ABqXApSM-70W_gYIwjvIW-66Eb09_eiKCUirHp9wpJt5p7O6U8jJCOPUUSRUHfctR61qtsRFqCmYIciUcSL6MD3xWehfod14P-IEMgWO4lYuh2tuGGx_UUmUj0rSdVhmbzImDhudy9_rimRKBdukgvd27DRN3HVG9fakJuyMx0ktY9zncqtgTDpj0b0q4-Zm5XLxBuAgU7jj5Tu-YUNFQutyItNbT7_uHo2Rw31qbtIptMSW1hvw4VVEp5K_3qynSUibdzn3tbnT7l4GDeQ549Yz615tWDgxoRy0uUYbZlGceoqVLuDQQPuXJ4I6j0quYyY4ON-M0XJHBCeoq0ZyRZt4-elUiC_DHWiAl8vLUASiKiwDljwaaAlGAKqxYx5AO9A0yF5OetSykRPJx1qHYCpK-TnNYyKK7HJ4NZ31M5PURie9Nk3CNuapBcsxtxTKTJUapbsWhXaocxkbOcVlzgRmQijmGSQznODWsJGbLAcGtbkjlJzVpiJlGRTEDIMZqQImFDQyncdDUMTM
图像解码
import tensorflow as tf
import base64
import cv2
import numpy as np
if __name__ == "__main__":
path = "/Users/admin/Documents/111.jpeg"
img = tf.io.read_file(path)
print("图像字节编码:{}".format(img))
img1 = tf.io.gfile.GFile(path, 'rb')
print("图像字节编码:{}".format(img1.readlines()))
img_64 = tf.io.encode_base64(img)
img_64 = format(img_64)[2:-1]
print("网络安全Base_64编码:{}".format(img_64))
img_b64 = list(img_64)
img_b64_list = []
for i in range(len(img_b64)):
if img_b64[i] == "-":
img_b64_list.append("+")
elif img_b64[i] == "_":
img_b64_list.append("/")
else:
img_b64_list.append(img_b64[i])
if len(img_b64_list) % 4 != 0:
remainder = len(img_b64_list) % 4
for i in range(remainder):
img_b64_list.append("=")
img_b64 = "".join(img_b64_list)
print("标准Base_64编码:{}".format(img_b64))
with open(path, "rb") as f:
img3 = f.read()
img_stand_b64 = base64.b64encode(img3)
img_stand_b64_str = img_stand_b64.decode("utf8")
print("标准Base_64编码:{}".format(img_stand_b64_str))
img_w64 = list(img_stand_b64_str)
img_w64_list = []
for i in range(len(img_w64)):
if img_w64[i] == "+":
img_w64_list.append("-")
elif img_w64[i] == "/":
img_w64_list.append("_")
elif img_w64[i] == "=":
break
else:
img_w64_list.append(img_w64[i])
img_w64 = "".join(img_w64_list)
print("网络安全Base_64编码:{}".format(img_w64))
# 网络安全Base64解码
img_w64_tensor = tf.convert_to_tensor(img_w64)
img_w64_decode = tf.io.decode_base64(img_w64_tensor)
img_matrix = tf.io.decode_image(img_w64_decode)
img_matrix = np.uint8(img_matrix)
r, g, b = cv2.split(img_matrix)
img_matrix = cv2.merge((b, g, r))
cv2.namedWindow('img', cv2.WINDOW_NORMAL)
while True:
cv2.imshow('img', img_matrix)
key = cv2.waitKey()
if key & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
运行结果
图像压缩
import tensorflow as tf
import base64
import cv2
if __name__ == "__main__":
path = "/Users/admin/Documents/111.jpeg"
img = tf.io.read_file(path)
print("图像字节编码:{}".format(img))
img1 = tf.io.gfile.GFile(path, 'rb')
print("图像字节编码:{}".format(img1.readlines()))
img_64 = tf.io.encode_base64(img)
img_64 = format(img_64)[2:-1]
print("网络安全Base_64编码:{}".format(img_64))
img_b64 = list(img_64)
img_b64_list = []
for i in range(len(img_b64)):
if img_b64[i] == "-":
img_b64_list.append("+")
elif img_b64[i] == "_":
img_b64_list.append("/")
else:
img_b64_list.append(img_b64[i])
if len(img_b64_list) % 4 != 0:
remainder = len(img_b64_list) % 4
for i in range(remainder):
img_b64_list.append("=")
img_b64 = "".join(img_b64_list)
print("标准Base_64编码:{}".format(img_b64))
with open(path, "rb") as f:
img3 = f.read()
img_stand_b64 = base64.b64encode(img3)
img_stand_b64_str = img_stand_b64.decode("utf8")
print("标准Base_64编码:{}".format(img_stand_b64_str))
img_w64 = list(img_stand_b64_str)
img_w64_list = []
for i in range(len(img_w64)):
if img_w64[i] == "+":
img_w64_list.append("-")
elif img_w64[i] == "/":
img_w64_list.append("_")
elif img_w64[i] == "=":
break
else:
img_w64_list.append(img_w64[i])
img_w64 = "".join(img_w64_list)
print("网络安全Base_64编码:{}".format(img_w64))
# 网络安全Base64解码
img_w64_tensor = tf.convert_to_tensor(img_w64)
img_w64_decode = tf.io.decode_base64(img_w64_tensor)
img_matrix = tf.io.decode_image(img_w64_decode)
# 图像压缩的8种方法
# bilinear双线性插值,lanczos3为lanczos插值,卷积核尺寸为3*3
# lanczos5为lanczos插值,卷积核尺寸为5*5
# bicubic双三次插值,gaussian高斯插值,nearest最近邻插值
# area区域插值,mitchellcubic米切尔立方插值
methords1 = ["bilinear", "lanczos3", "lanczos5", "bicubic"]
methords2 = ["gaussian", "nearest", "area", "mitchellcubic"]
if img_matrix.dtype != tf.float32:
img_matrix = tf.image.convert_image_dtype(img_matrix, dtype=tf.float32)
for i in range(4):
# tensorflow压缩图像
img_matrix1 = tf.image.resize(img_matrix, [400, 400], method=methords1[i])
if img_matrix1.dtype == tf.float32:
img_matrix1 = tf.image.convert_image_dtype(img_matrix1, dtype=tf.uint8)
img_matrix1 = img_matrix1.numpy()
r, g, b = cv2.split(img_matrix1)
img_matrix1 = cv2.merge((b, g, r))
cv2.namedWindow('img' + str(i), cv2.WINDOW_NORMAL)
while True:
cv2.imshow('img' + str(i), img_matrix1)
key = cv2.waitKey()
if key & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
运行结果
可能这些压缩方式在我们肉眼看起来是没有什么太大区别的。