我可以通过PIL,Python OpenCV等工具以及一些内置函数从磁盘中读取jpg图像,例如(在OpenCV的情况下)arr=cv2.imread(filename)
,将其转换为numpy数组。
但是,如何直接从内存中解码二进制格式的jpg图像呢?
应用场景:我想以二进制格式将jpg图像放入数据库,并从数据库中读取到内存中并解码成numpy数组。
这个可能吗?
假设您将图像数据存储在数据库中作为字符串
,您需要首先构造一个numpy
数组,然后可以使用cv2.imdecode
将其转换为图像。例如:
img = cv2.imdecode(np.fromstring(img_data, dtype=np.uint8), cv2.IMREAD_UNCHANGED)
对于Python3,请使用以下方式:
from scipy import misc
import io
f = open('file.png', 'rb')
fs = f.read()
likefile = io.BytesIO(fs)
face1 = misc.imread(likefile)
Python2中有StringIO
模块。
从Url获取图像并转换为Jpg格式
import requests
from io import BytesIO
response = requests.get("https://optse.ztat.net/teaser/ES/CW15_ES_bermuda_men.jpg")
my_img_In_byts = BytesIO(response.content).read()
path="C:/Users/XX/Desktop/TryingPython/downloadedPic.jpg"
my_fprinter = open(path, mode='wb')
print( my_fprinter .write(my_img_In_byts))
my_fprinter.close()
print("Done")
misc
是什么意思? :) - jtlz2