Quantcast
Channel: OpenCV Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 2088

problem in displaying video stream window in face detection python

$
0
0
hey i just want some help this is my code but i do not know how to display the video using imshow or anyother method. it was working fine but as soon as i put all the code into processes it is running in chunks and secondly i am not able to display video. can someone please help me ? i do not know what i am doing wrong. import cv2 import os, numpy import sys import time import multiprocessing as mp from multiprocessing import Process, Queue #CASCADE_FILE = 'haarcascade_frontalface_default.xml' fn_dir = 'att_faces' fn_name = sys.argv[1] path = os.path.join(fn_dir, fn_name) if not os.path.isdir(path): os.mkdir(path) face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml') #capture = cv2.VideoCapture(0) def setup_camera(q): capture = cv2.VideoCapture(0) ret, frame = capture.read() frame = cv2.flip(frame, 1) frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) q.put( frame) return frame def faceDetect(frame): print "frame" , frame gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 2) print "FACE LENGTH" print len(faces) if( len(faces)>0): for (x,y,w,h) in faces: cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2) cv2.putText(frame, 'unknown', (x - 10, y - 10), cv2.FONT_HERSHEY_PLAIN, 1,(0, 255, 0)) roi_gray = gray[y:y+h, x:x+w] roi_color = frame[y:y+h, x:x+w] eyes = eye_cascade.detectMultiScale(roi_gray) for (ex,ey,ew,eh) in eyes: cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2) pin=sorted([int(n[:n.find('.')]) for n in os.listdir(path) if n[0]!='.' ]+[0])[-1] + 1 cv2.imwrite('%s/%s.png' % (path, pin), roi_gray) else: print"not found" if __name__ == '__main__': while True: #capture = cv2.VideoCapture(0) print "7 queue" q = mp.Queue() p1 = Process(target=setup_camera, args=(q,)) p1.start() print "process 1 started" fr=q.get() print "got frame from queue" p1.join() print "process 2" p2 = Process(target=faceDetect, args=(fr,)) p2.start() print "process 2 started" cv2.imshow('img',fr) #cv2.imshow('img',fr) cv2.waitKey(0) #capture.release() #cv2.destroyAllWindows() # When everything is done, release the capture capture.release() cv2.destroyAllWindows()

Viewing all articles
Browse latest Browse all 2088

Trending Articles