2
votes

Left: Correct, Right: Broken

Pictured above on the left is how it should look (captured using a Galaxy S6), but on the right (captured using a Galaxy S7) is what I'm getting if I use the Camera2 API on an S7. I'm doing computer vision stuff using OpenCV so this glossy effect is breaking it.

It seems the Camera2 API (the stock Samsung camera app is fine) is producing some sort of undesired glossy effect when used on the Galaxy S7. I've tried the plain Android Camera2 API and the Samsung Galaxy Camera SDK 1.1 (found on http://developer.samsung.com/galaxy#camera).

This doesn't happen if I'm using the deprecated Camera1 API, so it seems the issue is with the S7's HALv3. This also never happens on the Galaxy S6 and other devices (both Samsung and non-Samsung).

If you try any 3rd-party camera app on the Play Store that uses Camera2, you should be able to replicate this effect. Not sure if SO is the best place to post this, but Samsung doesn't seem to be active in their own developer forums.

1
Same issue here. The Galaxy S6 had other issues with the camera2 API. There I also had to use the old API.vRallev

1 Answers

1
votes

This is controlled by various CaptureRequest settings. S7 has perhaps different default settings for Camera2 API, that's why it is different from the S6, but you should be able to get similar results just by experimenting with various settings.

You should get rid of the "glow" by disabling EDGE_MODE like this: requestBuilder.set(CaptureRequest.EDGE_MODE, CaptureRequest.EDGE_MODE_OFF);

See for more settings and description: https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html#EDGE_MODE