0

顔検出の方法に関するiTunes U のチュートリアルに従います (チュートリアルはビデオのみであり、オンラインで書かれていないため、直接リンクを投稿することはできません)。基本的に、私は顔検出を機能させましたが、電話がLandscapeLeftモードの場合のみです.

なぜそれがそのように機能するのかについてのアイデアはありますか?

4

1 に答える 1

4

あなたのコードを見ずに言うのは難しいですが、私の推測では、あなたは設定していませんCIDetectorImageOrientationか? 画像の向きと検出器の向きの設定が一致しないと、検出に失敗しました。

以下のいくつかのコード - 切り貼りではなく、より大まかな例です。

- (void)detectFacialFeatures:(UIImage *)image withHighAccuracy:(BOOL) highAccuracy
{

CIImage* ciImage = [CIImage imageWithCGImage:sourceImage.CGImage];

if (ciImage == nil){
    printf("ugh \n");
    // bail
}

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    NSString *accuracy = highAccuracy ? CIDetectorAccuracyHigh : CIDetectorAccuracyLow;

    NSDictionary* options = [NSDictionary dictionaryWithObjectsAndKeys:
                             CIDetectorAccuracyHigh, CIDetectorAccuracy,
                             orientation, CIDetectorImageOrientation,
                             nil];

    CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeFace 
                                              context:nil options:options];

    NSArray *features = [detector featuresInImage:ciImage];

    NSLog(@"features %@", features);

});
}
于 2012-06-19T23:21:18.700 に答える