Camera2 preview stretched when cropping with SCALER_CROP_REGION

橙三吉。 提交于 2019-12-02 06:04:54

问题


I want to display a preview in fullscreen using camera2 api. The camera size I selected is 4160x3120 (16:9) and my screen is 1080x1920 (9:16). Therefore if I want the preview to be right scaled I have to crop the camera output :

Rect zoomCrop = new Rect(0, 0, 1755, 3120);
captureRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, zoomCrop);

The cropped preview should be of size 1755x3120 which has a ratio of 9:16 as well. Still the preview is streched.

Question : Am I using SCALER_CROP_REGION correctly ? If not, how am I supposed to use it ?

Thanks in advance


回答1:


I've been struggling with the same sort of problem, as I want to implement a camera preview stream into a square TextureView.

Working with the SCALER_CROP_REGION seemed like the obvious place to resolve issues with incompatible aspect ratios, but I don't think that operation will ever actually change the aspect ratio of the result, hence it doesn't prevent stretching/warping behaviour. (the docs talk about this)

I've made progress by implementing a similar transform to the one in the Camera2Basic example project - see the function configureTransform in Camera2BasicFragment).

Using this sort of view-level scaling matrix, you can manage the scaling/cropping of the camera preview without altering the size of your view.




回答2:


It sounds like you are getting a landscape image and displaying it in a portrait view - this means that you will have 'pillar box' lines above and below the image if you want to avoid distortion.

If you did want to fill the screen, and not have distortion or the pillar box lines then you would have to accept that part of your image will not be visible, as its outside the shape of the viewing area.

SCALER_CROP_REGION is tricky to understand without diagrams - I found the best explanation to be in the Andoir source documentation here: https://source.android.com/devices/camera/camera3_crop_reprocess

One diagram reproduced from that helps as an example here - the reason for highlight this is to show how the co-ordinates are being used. If you look at your crop region it will be biased towards the top left as you start at (0,0), which I am not sure is what you actually want.



来源:https://stackoverflow.com/questions/43917823/camera2-preview-stretched-when-cropping-with-scaler-crop-region

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!