1
Guys, I’m trying to run this code and it locks the camera and does nothing else. The idea of the code is to run the face detector inside the widgets + kivy using this library from kivy.uix.image import Image. someone can help me ?
from kivy.app import App
from kivy.clock import Clock
from kivy.graphics.texture import Texture
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image
# DIRETORIO DO HAAR
faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
class cadastro(App):
def build(self):
self.img1 = Image(source='logoCL.jpg')
layout = BoxLayout(orientation='vertical')
layout.add_widget(self.img1)
# CAMERA CONFIGURAÇÃO
self.cap = cv2.VideoCapture(0)
# self.cap.set(3, 640) # set Width
# self.cap.set(4, 480) # set Height
Clock.schedule_interval(self.atualizaImagem, 1.0 / 30.0)
return layout
def atualizaImagem(self, dt):
ret, frame = self.cap.read() # captura uma imagem da camera
# inverte para não ficar de cabeça para baixo
if ret:
buf1 = cv2.flip(frame, 0)
buf = buf1.tostring() # converte em textura
texture1 = Texture.create(size=(frame.shape[1], frame.shape[0]), colorfmt='bgr')
texture1.blit_buffer(buf, colorfmt='bgr', bufferfmt='ubyte')
self.img1.texture = texture1 # apresenta a imagem
# SE A CAMERA FICAR DE PONTA CABEÇA
# img = cv2.flip(img, -1)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.2,
minNeighbors=5,
minSize=(20, 20)
)
# CONFIGURAÇÃO DA FACE PARA RECONHECER FICA QUADRADO AZUL
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
roi_gray = gray[y:y + h, x:x + w]
roi_color = frame[y:y + h, x:x + w]
# MOSTRA NA CAMERA
# cv2.imshow('video', img)
# FECHAR A CAMERA. NÃO PRECISA POR Q A CAMERA
# VAI ESTAR RODANDO NO MAIN.PY QUANDO FECHA O MAIN.PY CAMERA FECHA JUNTO
# POR QUE ESTA NO MESMO LAYOUT
# k = cv2.waitKey(30) & 0xff
# if k == 27: # press 'ESC' to quit
# break
self.cap.release()
cv2.destroyAllWindows()
pass
# INICIA O APP
if __name__ == '__main__':
cadastro().run() ```