Получите 9 похожих изображений с python - PullRequest
0 голосов
/ 06 апреля 2020

так вот графический интерфейс c, который я хочу создать, поэтому, когда я нажимаю на кнопку "parcourir", я выбираю изображение, и это работает, поэтому главная проблема заключается в том, когда я нажимаю на "recherche image similaire" для печати 9 наиболее похожих изображений по сравнению с исходным изображением с использованием факторного расстояния, поэтому используйте метод calcHist для расчета цвета гистограммы, затем гистограмма нормализуется с помощью метода cv.normalize: compHist для сравнения гистограмм между 2 изображениями, поэтому я использую команду cv.compareHist, которая вернуть расстояние между двумя изображениями, тогда последний метод - showResults (): отсортировать изображения по расстоянию, затем распечатать 9 изображений с их расстоянием в сетке, так как я могу это сделать? это мой код

from PyQt5 import QtWidgets
import sys
import cv2 as cv
import numpy as np
import design
import os
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as figureCanvas
class designWindow(QtWidgets.QMainWindow, design.Ui_MainWindow):
    def __init__(self):
        super(designWindow, self).__init__()
        self.setupUi(self)
        self.figImg = makeFigure(self.horizontalLayout)
        self.GridLay = makeFigure(self.gridLayout)
        self.pushButton.clicked.connect(self.getImage)
        self.pushButton_2.clicked.connect(self.showResults)
    def getImage(self):
        file = QtWidgets.QFileDialog.getOpenFileName(self, "choose image", "", "image files (*.jpg)")
        if file[0]:
            self.img_req = cv.imread(file[0])
            self.img_req = cv.cvtColor(self.img_req, cv.COLOR_BGR2RGB)
            self.figImg.clf()
            ax = self.figImg.add_subplot(111)
            ax.imshow(self.img_req)
            ax.axis("off")
            self.figImg.canvas.draw()
    def calcDistance():
        L = []
        for i in files:
            H1 = calcHist(self.img_req, 0)
            H2 = calcHist(i, 0)
            d = compHist(H1, H2)
            L.append(d)
        return L
    def showResults(self):
        L.sort()
        for i in range(1,10):
            ax = self.GridLay.add_subplot(3,3,i)
            ax.imshow(self.files[i])
            ax.axis("off")
            self.GridLay.canvas.draw()
path = "C:\\Users\\HELMI MEHDI\\Desktop\\TP2\\TP2_base_images\\bases_images\\"
pathname = os.path.dirname(path)
files = os.listdir(pathname)
def compHist(hist_img_req,hist_img_cour):
    return cv.compareHist(hist_img_req,hist_img_cour,cv.HISTCMP_INTERSECT)
def calcHist(img, ch = 0):
    histimg = cv.calcHist([img],[ch],None,[256],[0,256])
    return cv.normalize(histimg,histimg_norm)
def makeFigure(layout):
    fig = Figure()
    canvas = figureCanvas(fig)
    layout.addWidget(canvas)
    canvas.draw()
    return fig
def main():
    app = QtWidgets.QApplication(sys.argv)
    form = designWindow()
    form.show()
    app.exec_()
if __name__ == "__main__":
    main() 
...