2017-05-12 3 views
1

Ich arbeite an einer Android-App, die OpenCV 3.1.0 verwendet und die Kameravorschau anzeigt. Anfangs nennen wir setMaxFrameSize (640, 480), weil die Verarbeitung, die benötigt wird, schwer ist und wir nicht die beste Videoqualität benötigen, die die Kamera bietet. Die App funktioniert auf jedem Gerät außer dem Telefon des Kunden. Klassische Geschichte, nicht wahr?setPreviewSize in OpenCV

Das genaue Problem ist die Tatsache, dass, obwohl wir die maximale Rahmengröße zu 640 x 480, auf seinem Gerät (Samsung J3) die Auflösung wird 1280 x 720.

ich in JavaCameraView Datei sah explizit festgelegt von OpenCV und aufgerufene getSupportedPreviewSizes. 640 x 480 ist in dieser Liste. Alles funktioniert gut, wir setzen einige Parameter und am Ende rufen wir mCamera.setParameters (params) auf;

Die nächste Zeile in der Klasse ist: params = mCamera.getParameters();

Bei der Einstellung der Parameter, params.getPreviewSize() = 640 x 480. Nach mCamera.getParameters() aufgerufen wird, wird die params.getPreviewSize() 1280 seine x 720. Und es ist nur auf diesem Gerät wiedergegeben werden.

Ich habe die App auf Nexus 6P, Samsung S6, Samsung Tablet und ein paar Telefone getestet und alles funktioniert gut, die Auflösung ist 640 x 480. Aber auf Samsung J3, was Auflösung ich einstellen werde, wird die Kamera einen 1280 x 720 Frame anzeigen.

Vielen Dank!

Aktualisierung: 2 Tage später. Habe keine Lösung gefunden.

Antwort

1

Dies ist nicht das einzige Gerät, das Fehler mit der Größe der Kameravorschau hat. Siehe z.B. setPreviewSize does not work on Nexus 5 kitkat, auch https://issuetracker.google.com/issues/36982218 und .

Das J3-Gerät läuft unter 5.1.1 (Lollipop), daher soll es die neue camera2-API unterstützen, siehe Android camera android.hardware.Camera deprecated. Vielleicht ist der Fehler in der camera2 API behoben.

Eigentlich ist J3 nicht so schlecht, zumindest meldet es die wahre Größe, wenn Sie Camera.getParameters() aufrufen. Wir haben eine "schwarze Liste" von Geräten, die ihre Parameter nicht korrekt darstellen, und aktualisieren sie jedes Mal, wenn ein Problem für einen unserer Kunden auftritt. Die Liste ist ziemlich lang;)

+0

Danke Alex! –