我想使用相機預覽進行圖像識別。對於我的 目的,我需要預覽分辨率儘可能高 (並且同時向用戶顯示預覽)。如何獲得720p Android相機預覽數據?
我創建了一個Preview類,擴展了SurfaceView並將 PreviewSize設置爲1280x720。我添加了一個PreviewCallBack讓現場 圖片:
camera = Camera.open();
parameters = camera.getParameters();
parameters.setPreviewSize(1280,720);
camera.setParameters(parameters);
byte[] b = new byte[camera.getParameters().getPreviewSize().width *
camera.getParameters().getPreviewSize().height *
ImageFormat.getBitsPerPixel(camera.getParameters().getPreviewFormat())/8];
camera.addCallbackBuffer(b);
camera.setPreviewCallbackWithBuffer(new CameraPreviewCallback());
try {
camera.setPreviewDisplay(this.getHolder());
camera.startPreview()
}
我的字節數組b爲1382400字節我 CameraPreviewCallback.onPreviewFrame()函數接收那些1382400個 字節 - 但只有前497664字節包含數據(匹配一個 768x432分辨率(HTC Desire))。我在不同的設備上測試過,所有的顯示分辨率都是 800x480(HTC Desire,LG Optimus 3D,Samsung Galaxy S2,Samsung Galaxy Tab,...)。我的代碼唯一的設備是HTC Desire HD。
有誰知道如何獲得完整的720p分辨率作爲字節 數組? 「某物」似乎降低了預覽分辨率以適合智能手機顯示屏。
問候
Joern
你確定你的手機支持720p嗎? Logcat會說什麼(比如「無法設置分辨率」)? – Lennart
是,所有設備都支持720p作爲預覽尺寸。 Logcat沒有說任何特別的東西 - 它看起來像「某些東西」會默默地降低預覽分辨率。 –
getPreviewSize()返回正確的大小嗎? – Lennart