IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Xcode et AVFoundation pour capturer des photo [Résolu], Les photos sortent très sombres
Options
perdix
posté 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)
Fichier joint  ViewControllerExtract.txt ( 3.95 Ko ) Nombre de téléchargements : 9
 


--------------------
iMac 2010 27"
MacBook Pro 2007
iPad 2 3G - 64 Go
iPhone 5 - 64 Go
Go to the top of the page
 
+Quote Post
chombier
posté 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' (:
Go to the top of the page
 
+Quote Post
perdix
posté 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 sad.gif

Merci d'avance


--------------------
iMac 2010 27"
MacBook Pro 2007
iPad 2 3G - 64 Go
iPhone 5 - 64 Go
Go to the top of the page
 
+Quote Post
chombier
posté 24 Jul 2013, 19:01
Message #4


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 580
Inscrit : 20 Mar 2003
Membre no 6 765



Citation (perdix @ 24 Jul 2013, 19:46) *
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 sad.gif

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' (:
Go to the top of the page
 
+Quote Post
perdix
posté 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 blink.gif


--------------------
iMac 2010 27"
MacBook Pro 2007
iPad 2 3G - 64 Go
iPhone 5 - 64 Go
Go to the top of the page
 
+Quote Post
sarbogast
posté 4 Dec 2014, 07:57
Message #6


Nouveau Membre


Groupe : Membres
Messages : 4
Inscrit : 30 May 2008
Membre no 115 062



Citation (perdix @ 25 Jul 2013, 10:47) *
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.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 28th March 2024 - 22:37