2017-05-12 1 views
1

Je travaille sur une application Android qui utilise OpenCV 3.1.0 et affiche l'aperçu de la caméra. Initialement, nous appelons setMaxFrameSize (640, 480) car le traitement requis est lourd et nous n'avons pas besoin de la meilleure qualité vidéo offerte par la caméra. L'application fonctionne bien sur tous les appareils sauf le téléphone du client. Histoire classique hein?setPreviewSize dans OpenCV

Le problème exact est le fait que même si nous fixons explicitement la taille du cadre max pour être 640 x 480, sur son appareil (Samsung J3) la résolution sera de 1280 x 720.

Je regardé à l'intérieur fichier JavaCameraView à partir d'OpenCV et appelé getSupportedPreviewSizes. 640 x 480 est dans cette liste. Tout fonctionne bien, nous définissons quelques paramètres et à la fin nous appelons mCamera.setParameters (params);

La ligne suivante de la classe est: params = mCamera.getParameters();

Lors du réglage des paramètres, params.getPreviewSize() = 640 x 480. Après avoir appelé mCamera.getParameters(), le params.getPreviewSize() sera 1280 x 720. Et il est seulement reproduire sur cet appareil. J'ai testé l'application sur Nexus 6P, Samsung S6, tablette Samsung et un couple de téléphones et tout fonctionne très bien, la résolution est de 640 x 480. Mais sur Samsung J3 quelle que soit la résolution que je règle, l'appareil photo afficher un cadre de 1280 x 720.

Merci!

Mise à jour: 2 jours plus tard. N'a pas trouvé de solution.

Répondre

1

Ce n'est pas le seul périphérique qui a des bogues avec la taille de l'aperçu de la caméra. Voir par exemple setPreviewSize does not work on Nexus 5 kitkat, également https://issuetracker.google.com/issues/36982218 et .

Le périphérique J3 exécute 5.1.1 (Lollipop), il est donc supposé prendre en charge la nouvelle API camera2, voir Android camera android.hardware.Camera deprecated. Peut-être que le bug est corrigé dans l'API camera2.

En fait, J3 n'est pas ce mauvais, au moins il signale la vraie taille lorsque vous appelez Camera.getParameters(). Nous avons une «liste noire» codée en dur des périphériques qui ne présentent pas leurs paramètres correctement, et les mettons à jour chaque fois qu'un problème survient pour l'un de nos clients. La liste est assez longue;)

+0

Merci Alex! –