L'application que j'utilise actuellement dispose d'une fonctionnalité principale pour analyser en continu les codes QR/Bar en utilisant la bibliothèque Zxing (http://code.google.com/p/zxing/). Pour la capture de trame continue, j'ai utilisé pour initialiser AVCaptureSession et AVCaptureVideoOutput, AVCaptureVideoPreviewLayer décrit dans la pomme Q & A http://developer.apple.com/iphone/library/qa/qa2010/qa1702.html. Mon problème est que, lorsque j'échappais l'aperçu de la caméra, l'image que je peux voir à travers le périphérique vidéo est beaucoup plus grande (1.5x) que l'image que nous pouvons voir à travers l'appareil photo de l'iPhone. Notre client doit tenir l'iPhone à une distance d'environ 5 cm du code à barres lors de la numérisation, mais si vous tenez l'iPhone sur ce paramètre, tout le code QR ne sera pas visible et le décodage échouera. Pourquoi la caméra vidéo de l'iPhone 4 agrandit-elle l'image (en visionnant AVCaptureVideoPreviewLayer)?La couche d'aperçu de la caméra AV Foundation est agrandie, comment faire un zoom arrière?
Répondre
Je réponds à nouveau à ma propre question. Cela n'a pas été répondu même dans le forum Apple Dev, par conséquent j'ai directement déposé une demande de support technique d'Apple et ils ont répondu que c'est un problème connu et sera corrigé et publié avec une future version. Il n'y a donc rien que nous puissions faire de plus que d'attendre et de voir.
Vous voyez le même comportement avec l'application Caméra iPhone intégrée. Basculez entre les modes de capture fixe et vidéo et vous remarquerez que le niveau de zoom par défaut change. Vous voyez une vue plus large en mode fixe, tandis que le mode vidéo effectue un zoom sur un bit. Je suppose que la capture vidéo continue doit utiliser une zone plus petite du capteur de la caméra pour fonctionner de manière optimale. S'il utilisait le capteur entier, peut-être que le système ne pourrait pas supporter 30 fps. L'utilisation d'une zone plus petite du capteur donne l'effet de "zoomer" sur la scène.
Ceci est une fonction du paramètre prédéfini vidéo AVCaptureSession, accessible à l'aide de la propriété .sessionPreset. Par exemple, après avoir configuré votre captureSession, mais avant de commencer, vous ajouteriez
captureSession.sessionPreset = AVCaptureSessionPresetPhoto;
Voir la documentation ici:
Le préréglage par défaut pour la vidéo est 1280x720 (je pense) qui est une résolution inférieure au maximum pris en charge par la caméra. En utilisant le préréglage "Photo", vous obtenez les données brutes de l'appareil photo.
À la vôtre, à l'origine, j'étais en train de régler la présélection de la session dans le bloc lors de la capture d'une image. Donc, la première image était toujours plus grande. –
Une chance à ce sujet? – user281300