Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中读取图像而不将其保存在当前工作目录中_Python_Base64_Numpy Ndarray_Opencv Python - Fatal编程技术网

如何在python中读取图像而不将其保存在当前工作目录中

如何在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字符串形式的图像列表,我已经将每个字符串转换为numpy n维数组,现在我想将这些图像逐一与我的目录中的图像进行比较。 如果我必须将列表中的所有图像保存为base64字符串,这将是一个非常缓慢的过程。 有没有办法读取图像而不将其保存到目录中


导入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