👨💻个人简介: 深度学习图像领域工作者
🎉总结链接:
链接中主要是个人工作的总结,每个链接都是一些常用demo,代码直接复制运行即可。包括:
📌1.工作中常用深度学习脚本
📌2.torch、numpy等常用函数详解
📌3.opencv 图片、视频等操作
📌4.个人工作中的项目总结(纯干活)
链接: https://blog.csdn.net/qq_28949847/article/details/128552785
🎉视频讲解: 以上记录,通过B站等平台进行了视频讲解使用,可搜索 ‘Python图像识别’ 进行观看
B站:Python图像识别
抖音:Python图像识别
西瓜视频:Python图像识别
在线转换工具:https://www.wenyiso.com/tool/image2base64/
1. 带有jpg格式转码的base64编码
此种方式是将图片先经过cv2.imencode(".jpg", img_array)[1]
,jpg格式的编码,再进行base64编码,图片肉眼看不出什么不同来,但是图片的大小会被压缩,这里的压缩是 jpg 编码造成的。
import cv2
import base64
import numpy as np
def img_to_base64(img_array):
# 传入图片为RGB格式numpy矩阵,传出的base64也是通过RGB的编码
img_array = cv2.cvtColor(img_array, cv2.COLOR_RGB2BGR) #RGB2BGR,用于cv2编码
encode_image = cv2.imencode(".jpg", img_array)[1] #用cv2压缩/编码,转为一维数组
byte_data = encode_image.tobytes() #转换为二进制
base64_str = base64.b64encode(byte_data).decode("ascii") #转换为base64
return base64_str
def base64_to_img(base64_str):
# 传入为RGB格式下的base64,传出为RGB格式的numpy矩阵
byte_data = base64.b64decode(base64_str)#将base64转换为二进制
encode_image = np.asarray(bytearray(byte_data), dtype="uint8")# 二进制转换为一维数组
img_array = cv2.imdecode(encode_image, cv2.IMREAD_COLOR)# 用cv2解码为三通道矩阵
img_array = cv2.cvtColor(img_array, cv2.COLOR_BGR2RGB)# BGR2RGB
return img_array
2. 无jpg编码的base64编码
此种方式的编码,大小不会发生改变。一般跨语言应用时,应用这种方式,因为不同语言之间的jpg解码可能复杂程度不一样。
import cv2
import base64
import numpy as np
def img_to_base64(img_array):
# 转换为base64
base64_str = base64.b64encode(img_array).decode("ascii")
return base64_str
def base64_to_img(base64_str):
# 传入为RGB格式下的base64,传出为RGB格式的numpy矩阵
byte_data = base64.b64decode(base64_str) # 将base64转换为二进制
encode_image = np.asarray(bytearray(byte_data), dtype="uint8") # 二进制转换为一维数组
return encode_image
if __name__ == '__main__':
img = cv2.imread(r'E:\lg\BaiduSyncdisk\project\Time_plus\data\traindata_dongao\AerialSkill_A\Annotations\00001.png')
img_base64 = img_to_base64(img)
mask = base64_to_img(img_base64)
mask = mask.reshape(img.shape)
cv2.imshow('mask', mask)
cv2.waitKey(0)