Xcode et AVFoundation pour capturer des photo [Résolu], Les photos sortent très sombres |
Bienvenue invité ( Connexion | Inscription )
Xcode et AVFoundation pour capturer des photo [Résolu], Les photos sortent très sombres |
24 Jul 2013, 15:46
Message
#1
|
|
Adepte de Macbidouille Groupe : Membres Messages : 186 Inscrit : 17 Jun 2003 Lieu : Région Parisienne Membre no 8 102 |
Bonjour,
Je suis un amateur, en train de développer une petite application qui prend des photos avec la caméra avant de l'iPad et l'enregistre dans un album particulier. J'ai bien avancé : l'appli prend des photos et les enregistre mais ces photos sont très très sombres, alors que lorsque j'utilise l'appli d'Apple dans les mêmes conditions, les photos sortent bien... J'ai joint une version de mon code. Si quelqu'un a déjà rencontré ce problème ou a une idée de comment le résoudre, je suis preneur. PS : comme le mentionne le titre, j'utilise AVFoundation pour pouvoir personnaliser la capture des photos. Merci de votre aide. Je continue à chercher de mon côté... Ce message a été modifié par perdix - 25 Jul 2013, 09:48.
Fichier(s) joint(s)
-------------------- iMac 2010 27"
MacBook Pro 2007 iPad 2 3G - 64 Go iPhone 5 - 64 Go |
|
|
24 Jul 2013, 16:11
Message
#2
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 6 580 Inscrit : 20 Mar 2003 Membre no 6 765 |
Trouvé ça sur stackoverflow:
Citation The front-facing camera takes a while to adjust its white balance. You may need to KVO the isAdjustingWhiteBalance device property and only trigger the capture after the property has gone from NO to YES and back to NO for the first time.
-------------------- késtananafout' (:
|
|
|
24 Jul 2013, 18:46
Message
#3
|
|
Adepte de Macbidouille Groupe : Membres Messages : 186 Inscrit : 17 Jun 2003 Lieu : Région Parisienne Membre no 8 102 |
Merci, une idée de ce que cela veut dire ?
KVO ? Ou comment faire ? Je viens de chercher sur stock overflow et je suis tombé sur la même question, mais pas de feedback pour savoir si la solution proposée a fonctionné. En plus, je ne suis qu'un amateur et je n'ai vraiment aucune idée de comment traquer un évènement... Je vais continuer à chercher mais si toutes les suggestions sont les bienvenues poiyur me sortir de ce pétrin Merci d'avance -------------------- iMac 2010 27"
MacBook Pro 2007 iPad 2 3G - 64 Go iPhone 5 - 64 Go |
|
|
24 Jul 2013, 19:01
Message
#4
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 6 580 Inscrit : 20 Mar 2003 Membre no 6 765 |
Merci, une idée de ce que cela veut dire ? KVO ? Ou comment faire ? Je viens de chercher sur stock overflow et je suis tombé sur la même question, mais pas de feedback pour savoir si la solution proposée a fonctionné. En plus, je ne suis qu'un amateur et je n'ai vraiment aucune idée de comment traquer un évènement... Je vais continuer à chercher mais si toutes les suggestions sont les bienvenues poiyur me sortir de ce pétrin Merci d'avance KVO = key-value observer. un peu de lecture: http://developer.apple.com/library/ios/doc...ingWhiteBalance Il faut installer une fonction callback appelée lorsque la balance des blancs a fini de s'ajuster, ce qui semble correspondre à ton problème. Lorsque la valeur de "isAdjustingWhiteBalance" passe de YES à NO, tu peux prendre ta photo. -------------------- késtananafout' (:
|
|
|
25 Jul 2013, 09:47
Message
#5
|
|
Adepte de Macbidouille Groupe : Membres Messages : 186 Inscrit : 17 Jun 2003 Lieu : Région Parisienne Membre no 8 102 |
Merci de vos suggestions.Le problème est résolu et absolument pas lié à la balance des blancs mais à ma séquence d'enregistrement.
J'ai inversé mes lignes de code et le résultat fonctionne correctement. A bon entendeur... voici le code corrigé ! Citation [captureSession stopRunning]; AVCaptureConnection *videoConnection = nil; for (AVCaptureConnection *connection in captureImageOutput.connections) { for (AVCaptureInputPort *port in [connection inputPorts]) { if ([[port mediaType] isEqual:AVMediaTypeVideo] ) { videoConnection = connection; break; } } if (videoConnection) { break; } } [captureSession startRunning]; [captureImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error) { CFDictionaryRef exifAttachments = CMGetAttachment( imageSampleBuffer, kCGImagePropertyExifDictionary, NULL); if (exifAttachments) { // Do something with the attachments. NSLog(@"attachements: %@", exifAttachments); } else NSLog(@"no attachments"); NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]; stillImage = [[UIImage alloc] initWithData:imageData]; }]; [captureSession stopRunning]; L'image ainsi capturée ImageStill est bonne. En revanche, je rencontre un autre problème mineur : les images obtenues sont "comme dans un mirroir" droite/gauche. Probablement un réglage par défaut un peu bizarre... mais je n'ai pas trouvé lequel -------------------- iMac 2010 27"
MacBook Pro 2007 iPad 2 3G - 64 Go iPhone 5 - 64 Go |
|
|
4 Dec 2014, 07:57
Message
#6
|
|
Nouveau Membre Groupe : Membres Messages : 4 Inscrit : 30 May 2008 Membre no 115 062 |
Merci de vos suggestions.Le problème est résolu et absolument pas lié à la balance des blancs mais à ma séquence d'enregistrement. J'ai inversé mes lignes de code et le résultat fonctionne correctement. A bon entendeur... voici le code corrigé ! Tu l'auras surement compris depuis, le flip horizontal est voulu sur la caméra frontale. Par contre je serais très intéressé de savoir quelles lignes tu avais inversées entre ton code original et le nouveau, parce que j'ai exactement le même problème en ce moment et je n'arrive pas à le résoudre. J'ai buté sur la même réponse sur StackOverflow et je viens de tomber sur ton poste ici. Alors si tu avais encore une version de ton code avant que tu règles le problème pour que je puisse la comparer au code après, pour voir ce que tu a inversé comme lignes, ça m'aiderait beaucoup. Merci d'avance. |
|
|
Nous sommes le : 28th March 2024 - 22:37 |