Stap 4: Getting en vooraf verwerken van de beelden
In deze stap, we gaan voor het verzamelen van beelden van sommige vrienden en opslaan is een specifiek formaat zodat die code uit om hen krijgen kunt te leren herkennen van gezichten. U kunt zien screenshots geannoteerd, verzamelde foto's indelen in mappen:
1. input_images-Make een map met de naam "input_images" en opslaan van al uw vrienden afbeeldingen in die map. Er is geen behoefte om te doen een voorbehandeling hier. Gewoon uw vrienden foto's verzamelen en opslaan van alle beelden hier.
2. output_images-Make een map met de naam "output_images" en laat het leeg. Na het uitvoeren van de voorbewerkend code, het zal bijsnijden gezichten van afbeeldingen in de map "input_images" en slaat u ze hier. U kan het geannoteerde beeld zien: 'output_images' met opgeslagen beelden na het uitvoeren van de code in deze stap.
3. sorted_images - nu, we moet handmatig kiezen uw vrienden foto's opslaan in afzonderlijke mappen met namen en hetzelfde als uw vrienden. U kunt zien, ik heb foto's van 6 van mijn vrienden verzameld en ze in afzonderlijke mappen opgeslagen.
Waarom moeten we handmatig plukken en vrienden beelden organiseren? Ik zal antwoord op deze vraag in de volgende stap.
Nadat u deze code uitvoert, moet de map "output_images" vol bijgesneden afbeeldingen. Dus, nu overgaan tot het sub stap 3 hierboven waar we moeten al vrienden afbeeldingen handmatig in afzonderlijke mappen zetten.
Met deze sub stap, hebben we met succes afgerond voorbehandeling & organiseren onze gegevens (foto's).
Code
Bewaar dit als .py en het wilt uitvoeren vanaf de opdrachtregel. Ik neem aan dat je hebt praktische kennis van programmeren in python, dus ik ben niet uit te leggen hoe om het te draaien hier.
Opmerking: U hoeft afbeeldingen opgeslagen in 'input_images' map voordat u deze code uitvoert en het vooraf opgeleide XML-bestand gekoppeld aan deze stap opgeslagen met de naam - " haarcascade_frontalface_default.XML "in dezelfde map als deze code is in.
Ik heb kort commentaar wat de code doet op elk onderdeel.
U kunt dezelfde code weergeven hier .
U kunt dezelfde code ook downloaden hieronder zoals ik het op deze stap aangesloten heb.
'''<br>Surya Teja Cheedella shine123surya[at]gmail[dot]com BITS Pilani, Hyderabad Campus Takes all the images in "input_path" and analyses them for any faces. If face(s) is(are) found, it crops and saves them at "output_path". ''' import cv2 import cv2.cv as cv from os import listdir import time def cropImage(img, box): [p, q, r, s]= box # crop and save the image provided with the co-ordinates of bounding box write_img_color= img[q:q+ s, p:p+ r] saveCropped(write_img_color, name) # save the cropped image at specified location def saveCropped(img, name): cv2.imwrite(output_path+ name+ ".jpg", img) if __name__== "__main__": # paths to input and output images input_path= "input_images/" output_path= "output_images/" # load pre-trained frontalface cascade classifier frontal_face= cv2.CascadeClassifier("haarcascade_frontalface_default.xml") input_names= listdir("/home/suryateja/Documents/GitHub/FaceRecognizer/"+ input_path) print("Starting to detect faces in images and save the cropped images to output file...") sttime= time.clock() i= 1 for name in input_names: print(input_path+name) color_img= cv2.imread(input_path+ name) # converting color image to grayscale image gray_img= cv2.cvtColor(color_img, cv2.COLOR_BGR2GRAY) # find the bounding boxes around detected faces in images bBoxes= frontal_face.detectMultiScale(gray_img, scaleFactor=1.3, minNeighbors=5, minSize=(30, 30), flags = cv.CV_HAAR_SCALE_IMAGE) #print(bBoxes) for box in bBoxes: #print(box) # crop and save the image at specified location cropImage(color_img, box) i+= 1 print("Successfully completed the task in %.2f Secs." % (time.clock()- sttime))