Я просто застрял на каком-то Python GUI Application, который ссылается на приложение распознавания лиц - PullRequest
0 голосов
/ 01 марта 2019

Приложение FaceDetection
Похоже, что функция отображения имеет секцию ошибок

from  tkinter import  *
from tkinter.filedialog import *
import cv2 as cv
import numpy as np

global img
img = np.full((100,80,3), 12, np.uint8)
def loadImg():
imgTemp  = askopenfilename()
img = cv.imread(imgTemp)
print(img)


def display():
  gray_img = np.full((100,80,3), 12, np.uint8)
  gray_img = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
  faces = face_cascade.detectMultiScale(gray_img,1.02,5)
  print(type(faces))
  print(faces.shape)
  print(faces)

  for x,y,w,h in faces:
     img  = cv.rectangle(img,(x,y),(x+w,x+h),(0,255,0),3)

  resized = cv.resize(img,(int(img.shape[1]/2),int(img.shape[0]/2)))
  cv.imshow("Gray",resized)
  cv.waitKey(0)
  cv.destroyAllWindows()

class win:

 def __init__(self):
  global window
  window = Tk()
  window.title("Face-Detection___")
  window.geometry("500x500")
  #window.color("#008080")
  window.configure(background='#008080')
  button1 = Button(window,text="Upload",bg="gray",fg="teal",command=loadImg).pack()
  button2 = Button(window,text="Detect",bg="maroon",fg="white",command=display).pack()
  #window.mainloop(0)

obWin = win()

window.mainloop(0)

ОШИБКА Файл "GUI.py", строка 16, на дисплее gray_img = cv.cvtColor (img, cv.COLOR_BGR2GRAY) UnboundLocalError: локальная переменная 'img', указанная перед присваиванием

1 Ответ

0 голосов
/ 01 марта 2019

извините, я не прочитал ваш вопрос, вам нужно использовать global img в функции отображения, но img уже глобально определенная переменная, вам не нужно использовать global:

...
img = cv.imread(imgTemp)
...
def display():
  gray_img = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
  faces = face_cascade.detectMultiScale(gray_img,1.02,5)
  print(type(faces))
  print(faces.shape)
  print(faces)

  for x,y,w,h in faces:
     img  = cv.rectangle(img,(x,y),(x+w,x+h),(0,255,0),3)

  resized = cv.resize(img,(int(img.shape[1]/2),int(img.shape[0]/2)))
  cv.imshow("Gray",resized)
  cv.waitKey(0)
  cv.destroyAllWindows()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...