class ThreadedDetector:	
	def __init__(self, cascade, size):
		self.past = []
		
		self.haar = HaarDetector(cascade, size)
		self.haarResult = None
		self.thread = None
		
	def detect(self, image):
		res = None

		if len(self.past) == 0:
			res = self.haar.detect(image)
		else:
			if self.thread == None or self.thread.is_alive()==False:
				if self.haarResult != None:

					res = self.haarResult
					self.haarResult = None
				self.image = cv.CloneImage(image)
				self.thread = threading.Thread(target=ThreadedDetector.doThreadedHaar, args=(self, image))
				self.thread.daemon = True
				self.thread.start()
			if res == None:
				res = self.past[len(self.past)-1]

		self.past.append(res)
		return res

	def doThreadedHaar(self, image):
		self.haarResult = self.haar.detect(self.image)
		#return self.haarResult
예제 #2
0
import cv2
import HaarDetector as Detector
from Recognizer import searchFace, drawRectangle, FrameCharacter

if __name__ == "__main__":
    cap = cv2.VideoCapture("11.mp4")
    cv2.namedWindow("Faces found", cv2.WINDOW_NORMAL)
    font = cv2.FONT_HERSHEY_SIMPLEX
    detector = Detector.HaarDetector()

    while (1):
        #Получаем кадр
        ret, frame = cap.read()
        #Характеристики кадра
        FC = FrameCharacter(frame)
        frameCharacter = FC.character()

        #Область определения лица
        cv2.rectangle(frame,
                      (int(frameCharacter["X0"]), int(frameCharacter["Y0"])),
                      (int(frameCharacter["X1"]), int(frameCharacter["Y1"])),
                      (255, 0, 0), 2)

        faces = detector.detect(frame)
        drawRectangle(frame, faces)

        if (searchFace(frameCharacter, faces) == True):
            cv2.putText(frame, "STOP ROTATING", (250, 250), font, 0.5,
                        (0, 0, 255), 2, cv2.LINE_AA)
        else:
            text = "Face not found."
	def __init__(self, cascade, size):
		self.past = []
		
		self.haar = HaarDetector(cascade, size)
		self.haarResult = None
		self.thread = None