Accès à iOS 6 nouvelles Api pour l'exposition de l'appareil photo et la vitesse d'obturation
Sur l'Apple iOS 6.0 page de fonctionnalité, il l'habitude de dire
Profiter de l'appareil photo intégré de fonctionnalités avancées. De nouvelles Api vous permettent de contrôler la mise au point, exposition, et la région d'intérêt. Vous pouvez également accéder et à afficher les faces avec détection de visage Api, et de tirer parti de matériel vidéo compatibles avec la stabilisation.
Ce texte a depuis été supprimé, et je ne peux pas trouver de nouvelles méthodes dans l'API pour contrôler l'exposition. Dans la classe AVCaptureDevice
sous "Paramètres d'Exposition" il n'y a pas de nouvelles de propriété/méthode pour iOS 6.0. Savez-vous où je peux trouver de nouvelles fonctionnalités pour l'exposition dans l'API?
OriginalL'auteur Adam Popławski | 2012-09-28
Vous devez vous connecter pour publier un commentaire.
C'est vrai qu'il est un
-exposureMode
bien surAVCaptureDevice
, mais c'est seulement pour le réglage du mode (off/auto/continu) et non le f-stop, SS, ou de l'ISO. Caméra applications qui fournissent des "exposition" contrôle tous semblent le faire par le biais de post-traitement.Cependant, il semble qu'il y a des sans-papiers Api dans le cadre de ce faire. Découvrez la les en-têtes complets pour
AVCaptureDevice.h
(via un classe-dump) et note les méthodes suivantes:Ma conjecture est
gain
est équivalent à f-stop (ouverture fixe), etduration
est la vitesse d'obturation. Je me demande si elles sont utilisées pour l'iPhone 5 en faible lumière, le mode boost.Vous pouvez également utiliser
otool
à fouiller et essayer de recoller les symboles. Il y a probablement une nouvelle constante dansexposureMode
pour l'activation de la commande manuelle, etexposureDuration
semble comme il a des drapeaux de trop. Lors de l'appel de ceux-ci, assurez-vous d'utiliser le nouveau-isExposureModeSupported:
et aussi appel-respondsToSelector:
pour vérifier la compatibilité.Comme toujours, en utilisant des Api privées, c'est mal vu par Apple et est un motif de rejet de l'App Store. Il y a peut-être des moyens de contourner cela, comme cacher les appels à l'aide de
-performSelector:
ouobc_msgsend
avec rot13 de chaînes ou de quelque chose, comme je suis assez sûr que ils ne font de l'analyse statique de l'application binaires.setValue:forKey:
) pour définir les paramètres sans déclencher l'app storeIIRC, l'analyseur statique recherche privé de classe/les noms de propriété, de sorte que vous pourriez avoir besoin pour ROT13 ces chaînes pour avoir passer.
J'ai essayé de régler l'exposition manuellement avec setExposureGain: et rien ne change. Aussi, tandis que le réglage de l'exposition, le exposureGain propriété est toujours 1.0. Et j'ai aussi appelé setManualExposureSupportEnabled:OUI avant de régler l'exposition. Ne fonctionne pas :/
La structure semble correspondre à
typedef struct {CMTimeValue; CMTimeScale;CMTimeFlags;CMTimeEpoch;} CMTime;
(les membres sont typedefs pourint64_t
,int32_t
,uint32_t
,int64_t
respectivement).Confirmé. J'ai joué avec cette API privée récemment. La structure est exactement ce que vous avez dit.
OriginalL'auteur Michael Grinich
J'ai réussi à "truc" de la caméra dans l'exécution d'un temps de pose plus court, mais je pense qu'elle sera utile à ceux qui font similaires (macro) de l'image acquiert. J'ai d'abord mis en place AVCaptureDevice à utiliser AVCaptureExposureModeContinuousAutoexposure et réglez le flash sur TorchMode. J'ai ensuite UnlockForConfiguration et configurer une valeur-clé de l'observateur de regarder pour adjustingExposure à la fin. Je re-verrouiller l'appareil, retournez à AVCaptureExposureModeLocked, et d'éteindre la Torche. Cela a pour effet de force brute définition d'un plus court à la vitesse d'obturation que ce que la caméra serait de sélectionner sur la non-scène illuminée. En jouant avec la Torche niveau, je peux mettre toute relative de la valeur de vitesse d'obturation je veux (le mieux serait bien sûr de laisser le flambeau, mais dans mon application, il produit des reflets sur le sujet). De nouveau, cela ne fonctionne vraiment quand votre distance de l'objet est très proche (moins de 6 pouces), mais ça m'a permis d'éliminer le tremblement de la main flou dans mes images en gros plan. L'inconvénient est que les images sont plus sombres depuis je n'ai pas de moyen de l'usurpation de la caméra de gain, mais pas un problème dans mon application particulière.
J'ai eu le même problème. Pour une raison quelconque, la flamme semble à la traîne pendant un certain temps, même après que vous l'éteindre et de le déverrouiller pour la config. J'ai travaillé autour d'elle par l'insertion d'un fil de sommeil d'environ 1 seconde à droite après le déverrouillage. Brut, je sais, mais je n'ai jamais pu le faire fonctionner autrement.
OriginalL'auteur user3115647
On dirait qu'ils ont mis à jour que lié texte—il n'y a aucune mention de la nouvelle Api pour l'exposition:
Il est opt-dans la faible lumière, le mode boost pour iPhone 5, détaillé ici par Jim Rhoades (et dans ce développeur post sur le forum, journal requis).
OriginalL'auteur Freney
Comme un suivi de Michael Grinich d'excellentes informations, j'ai trouvé qu'il y a une dépendance de l'ordre sur certains des appels à l'API privée. Pour utiliser ", le manuel de contrôle de l'exposition, vous devez les activer avant vous définissez la mode, comme suit:
Tout cela est démontré dans iOS-ManualCamera.
OriginalL'auteur Bretton Wade
À partir de l'iOS 8.0, c'est enfin possible.
Voir setExposureModeCustomWithDuration etc. dans la documentation d'Apple.
Voici un article de discuter de la façon d'utiliser les Api.
OriginalL'auteur Simon Epskamp