IOS 5 SDK में फेस डिटेक्शन

आईओएस एसडीके लंबे समय से उपलब्ध है, लेकिन हर आईओएस डेवलपर जानता है कि उनके अनुप्रयोगों में नए एपीआई का उपयोग करना अभी भी बहुत जल्द है, क्योंकि ग्राहक इस ओएस के पुराने संस्करणों के साथ अपने कार्यक्रमों की अनुकूलता में रुचि रखते हैं।

लेकिन नए एसडीके में सब कुछ अच्छाई का मिला। आंख को पकड़ने के लिए सबसे पहले UIViewController viewWillUnload का तरीका था, जिसकी कुछ महीने पहले जरूरत थी।
आईओएस 5 के लिए नवाचारों की पूरी सूची यहां देखें
एड-ऑन फ्रेमवर्क की सूची में, CoreImage और विशेष रूप से CIDetector.h रुचि के हैं।

छवि में चेहरे खोजने और पहचानने में आपकी सहायता करने के लिए CIDetector वर्ग बनाया गया था , जिसे अब हम संक्षेप में करने का प्रयास करेंगे।


हम iOS 5 SDK के साथ Xcode 4.2 का उपयोग करते हैं।

एक प्रोजेक्ट बनाएं

"स्वचालित संदर्भ गणना का उपयोग करें" अक्षम करने की अत्यधिक अनुशंसा करें।

हम प्रोजेक्ट फ्रेमवर्क CoreImage से जुड़ते हैं

छवि

एक UIViewController बनाएं

#import <UIKit / UIKit.h>

@interface RootViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
{
IBOutlet UIImageView * imageView;
IBOutlet UILabel * लेबल;
Cidetector * डिटेक्टर;
}

@end


UIImagePickerController का उपयोग करके एक तस्वीर अपलोड करें

- ( आईबीए जंक्शन ) onImport : ( आईडी ) प्रेषक
{
UIImagePickerController * vc = [ [ UIImagePickerController आबंटित ] init ] ;
vc.delegate = self;
vc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[ स्व प्रस्तुतमॉडल व्यू कंट्रोलर : वीसी एनिमेटेड : यस ] ;
[ वीसी रिलीज ] ;
}


मैंने अपने डिवाइस को iOS 5 में अपग्रेड नहीं किया, क्योंकि सभी क्रियाएं सिम्युलेटर पर गैलरी से आयात के साथ की जाएंगी, न कि कैमरे से।

चित्र में चेहरों को परिभाषित करें

- ( IBAction ) onRecognize : ( आईडी ) प्रेषक
{
डिटेक्टर = [ CIDetector डिटेक्टरOfType : CIDetectorTypeFace संदर्भ : nil विकल्प : [ NSDictionary DictionaryWithObject : CIDetectorAccuracyHigh forKey : CIDetectorAccuracy ] ] ;

NSDate * तारीख = [ NSDate तारीख ] ;

NSArray * सुविधाएँ = [ डिटेक्टर विशेषताएँइन्माज :
[ [ [ CIImage आबंटन ] initWithCGImage : imageView.image.CGImage ] autorelease ]
] ;

NSTimeInterval ti = fabs ( [ दिनांक timeIntervalSinceNow ] ) ;

label.text = [ NSString stringWithFormat : @ "समय:% 0.3f \ n चेहरे:% i" , ti, [ फीचर काउंट ] ] ;

UIGraphicsBeginImageContext ( imageView.image.size ) ;

CGContextRef ctx = UIGraphicsGetCurrentContext ( ) ;

CGContextDrawImage ( ctx, CGRectMake ( 0 , 0 , imageView.image.size. उपलब्धता, imageView.image.size.height ) , imageView.image.CageImage;


के लिए ( CIFeature * सुविधाओं में सुविधा )
{
CGRect r = feature.bounds;

CGContextSetStrokeColor ( ctx, CGColorGetCompords ( [ UIColor YellowColor ] .CGColor ) ) ;
CGContextSetLineWidth ( ctx, 1.0f ) ;

CGContextBeginPath ( ctx ) ;
CGContextAddRect ( ctx, r ) ;
CGContextClosePath ( ctx ) ;
CGContextStrokePath ( ctx ) ;

}
imageView.image = [ UIImage imageWithCGImage : UIGraphicsGetImageFromCurrentImageContext ( ) .CGImage स्केल : 1.0f अभिविन्यास : UIImageOrientationDownMirrored ] ;
UIGraphicsEndImageContext ( ) ;

}


परिणाम

प्रलेखन में, CIFeature वर्ग का एक उदाहरण केवल फेस फ्रेम और उसके प्रकार के बारे में जानकारी देता है, लेकिन आप उम्मीद कर सकते हैं कि जब Apple OpenCV को पूरी तरह से पुनर्निर्देशित करता है, तो आप वर्ग अपडेट (IMHO) की प्रतीक्षा कर सकते हैं।





संपादित करें: onImport विधि में निश्चित चेहरा:

Source: https://habr.com/ru/post/In131121/


All Articles