Поверхностная функция дает затененный вид камеры в Android - PullRequest
1 голос
/ 05 апреля 2019

Я использую onPreviewFrame и функции поверхности для обработки на камере.Но вид с камеры очень затененный.Я застрял здесь.

Это растровая обработка изображения с камеры.Я пробовал это с изменением параметров размера и высоты, а также ширины.но бесполезно.

 public  void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i2, int i3) {// format,width,height
        int i4;
        Camera.Size size;
        if (this.mCamera1 == null) {

            this.mCamera1 = Camera.open();
            try {
                this.mCamera1.setPreviewCallback(this);
                this.mCamera1.setPreviewDisplay(surfaceHolder);
            } catch (IOException e2) {
                this.mCamera1.release();
                this.mCamera1 = null;
            }
        }
        Camera.Parameters parameters = this.mCamera1.getParameters();
        List supportedPreviewSizes = parameters.getSupportedPreviewSizes();
        for (i4 = 0; i4 < supportedPreviewSizes.size(); i4++) {
            size = (Camera.Size) supportedPreviewSizes.get(i4);
            if (size.width == i2 && size.height == i3) {
                break;
            }
        }
       // size = (Camera.Size) supportedPreviewSizes.get(0); //
        int i5 = i2 / i3;
        int i6 = 0;
        i4 = -1;
        int i7 = 0;
        while (i7 < supportedPreviewSizes.size()) {
            int i8;
            size = (Camera.Size) supportedPreviewSizes.get(i7);
            if (size.width / size.height == i5) {
                i8 = size.height * size.width;
                if (i8 > i6) {
                    i6 = i8;
                    i8 = i7;
                    i7++;
                    i4 = i8;
                }
            }
            i8 = i4;
            i7++;
            i4 = i8;
        }

        if (i4 >= 0) {
            size = (Camera.Size) supportedPreviewSizes.get(i4);
        } else {
            i5 = -1;
            i7 = 0;
            while (i7 < supportedPreviewSizes.size()) {
                size = (Camera.Size) supportedPreviewSizes.get(i7);
                int i8 = i6 - (size.height * size.width);
                if (Math.ceil((double) i8) < ((double) i5) || i5 == -1) {
                    i4 = i8;
                    i8 = i7;
                } else {
                    i8 = i4;
                    i4 = i5;
                }
                i7++;
                i5 = i4;
                i4 = i8;
            }
            size = i4 > 0 ? (Camera.Size) supportedPreviewSizes.get(i4) : (Camera.Size) supportedPreviewSizes.get(0);
        }
        parameters.setPreviewSize(size.width, size.height);
        size = parameters.getPreviewSize();
        //Log.i(TAG, "surfaceChanged: " + sizes + "size" + size +"");
        this.f803r = size.width;
        this.f804s = size.height;
        this.f789d = i2;
        this.f790e = i3;
        this.f795j = new int[(this.f804s * this.f803r)];
        this.f796k = new int[(this.f804s * this.f803r)];
        if (parameters.getSupportedFocusModes().contains("auto")) {
            parameters.setFocusMode("auto");
        }
        parameters.setWhiteBalance("auto");
        this.mCamera1.setParameters(parameters);
        this.mCamera1.startPreview();
        this.f802q = 2;
        this.f792g = false;
    }

ожидается четкое изображение с камеры введите описание изображения здесь

...