如何在python中读取图像而不将其保存在当前工作目录中
我有一个base64字符串形式的图像列表,我已经将每个字符串转换为numpy n维数组,现在我想将这些图像逐一与我的目录中的图像进行比较。 如果我必须将列表中的所有图像保存为base64字符串,这将是一个非常缓慢的过程。 有没有办法读取图像而不将其保存到目录中如何在python中读取图像而不将其保存在当前工作目录中,python,base64,numpy-ndarray,opencv-python,Python,Base64,Numpy Ndarray,Opencv Python,我有一个base64字符串形式的图像列表,我已经将每个字符串转换为numpy n维数组,现在我想将这些图像逐一与我的目录中的图像进行比较。 如果我必须将列表中的所有图像保存为base64字符串,这将是一个非常缓慢的过程。 有没有办法读取图像而不将其保存到目录中 导入base64 进口cv2 将numpy作为np导入 def比较(staticImage、ImageFromList): 原始=cv2.imread(静态图像) 对于ImageFromList中的i: nparr=np.frombuf
导入base64
进口cv2
将numpy作为np导入
def比较(staticImage、ImageFromList):
原始=cv2.imread(静态图像)
对于ImageFromList中的i:
nparr=np.frombuffer(base64.b64解码(i),np.uint8)
image=cv2.imdecode(nparr,cv2.IMREAD\u ANYCOLOR)
imwrite(“imgg.jpg”,图片)
image\u to\u compare=cv2.imread(“imgg.jpg”)
#1)检查两幅图像之间的相似性
#无检查未溶解参考
sift=cv2.xfeature2d.sift_create()
kp_1,desc_1=筛选、检测和计算(原始,无)
kp_2,desc_2=sift.detectAndCompute(图像比较,无)
索引参数=dict(算法=0,树=5)
搜索参数=dict()
flann=cv2.FlannBasedMatcher(索引参数、搜索参数)
匹配=法兰。knnMatch(描述1,描述2,k=2)
好分数=[]
对于匹配中的m,n:
如果m.距离<0.6*n.距离:
好的分数。追加(m)
如果len(良好_点)>0:
返回1
其他:
持续
我不想每次迭代都保存图像
除了这个过程,还有其他选择吗
import base64
import cv2
import numpy as np
def compare(staticImage, ImageFromList):
original = cv2.imread(staticImage)
for i in ImageFromList:
nparr = np.frombuffer(base64.b64decode(i), np.uint8)
image = cv2.imdecode(nparr, cv2.IMREAD_ANYCOLOR)
cv2.imwrite("imgg.jpg", image)
image_to_compare = cv2.imread("imgg.jpg")
# 1) Check for similarities between the 2 images
# noinspection PyUnresolvedReferences
sift = cv2.xfeatures2d.SIFT_create()
kp_1, desc_1 = sift.detectAndCompute(original, None)
kp_2, desc_2 = sift.detectAndCompute(image_to_compare, None)
index_params = dict(algorithm=0, trees=5)
search_params = dict()
flann = cv2.FlannBasedMatcher(index_params, search_params)
matches = flann.knnMatch(desc_1, desc_2, k=2)
good_points = []
for m, n in matches:
if m.distance < 0.6 * n.distance:
good_points.append(m)
if len(good_points) > 0:
return 1
else:
continue