微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将输入图像保存到变量中并在另一个函数中调用它?

如何解决如何将输入图像保存到变量中并在另一个函数中调用它?

我编写了一个代码来比较两个图像,并且运行良好。现在我想开发一个 UI 来浏览这两个图像,将两个图像作为输入,然后我的比较代码应该可以工作并给出结果。 下面是我的代码二从我的本地驱动器浏览两个不同的图像。

import PySimpleGUI as sg
import cv2
import numpy as np

supportedextensions = ['jpg','png']
layoutprefile = [
    [sg.Text('Select two images to proceed')],[sg.Text('Origi Image'),sg.input(),sg.Filebrowse()],[sg.Text('Input Image'),# *list1,[sg.Output(size=(61,5))],[sg.Submit('Compare'),sg.Cancel('Cancel')]
    ]
window = sg.Window('Image Compare',layoutprefile)
while True:    
    event,values = window.read()
    if event in (None,'Exit','Cancel'):
        secondwindow = 0
        break
    elif event == 'Compare':

现在我下面的代码是两个比较两个图像

# Original image
      image = 
      gray_image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
      histogram = cv2.calcHist([gray_image],[0],None,[256],[0,256])

           
        # Input1 image
      image1 = 
      gray_image1 = cv2.cvtColor(image1,cv2.COLOR_BGR2GRAY)
      histogram1 = cv2.calcHist([gray_image1],256])

   
  
   
c1 = 0
   

i = 0
while i<len(histogram) and i<len(histogram1):
    c1+=(histogram[i]-histogram1[i])**2
    i+= 1
c1 = c1**(1 / 2)
   
  

if(c1==0):
    print("Input image is matching with original image.")
elif(c1>0 or c1<0):
   print("Input image is not matching with original image")

ims = cv2.resize(image,(250,200))
ims1 = cv2.resize(image1,200))  

cv2.imshow("Original",ims)
cv2.imshow("Input1",ims1)

我需要用户输入的图像保存在图像和图像 1 中进行比较。 如何进行?

解决方法

您可以使用 sg.Input() 行获取您的 event,values = window.read() 值,并且您可以访问您的输入以获取您的输入。 您的代码将是这样的:

  # Original image
  image = cv2.imread(values[0])
  gray_image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
  histogram = cv2.calcHist([gray_image],[0],None,[256],[0,256])

       
    # Input1 image
  image1 = cv2.imread(values[1])
  gray_image1 = cv2.cvtColor(image1,cv2.COLOR_BGR2GRAY)
  histogram1 = cv2.calcHist([gray_image1],256])
  break

注意:您应该关闭窗口并在代码末尾使用这些行从 opencv imshow 销毁窗口:

cv2.waitKey()
cv2.destroyAllWindows()
window.close()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。