Камера OpenCV показывает черный экран - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь открыть камеру с помощью openCV, но отображается только черный экран. Я пробовал несколько библиотек, но все приводили к ошибкам, и я не довел их до завершения. При запуске моих журналов я вижу, что вызываются все функции. Разрешения камеры включены. В моей библиотеке opencv у меня есть много функций, устаревших с API 21. Пожалуйста, помогите

Ниже мой код

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import android.Manifest;
import android.content.pm.PackageManager;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.Toast;

import com.google.android.gms.vision.CameraSource;
import com.google.android.gms.vision.L;
import com.google.android.gms.vision.Tracker;
import com.google.android.gms.vision.face.Face;
import com.google.android.gms.vision.face.FaceDetector;
import com.google.android.gms.vision.face.LargestFaceFocusingProcessor;
import com.google.android.material.bottomnavigation.BottomNavigationView;

import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.JavaCameraView;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.imgproc.Imgproc;

import java.io.IOException;

import static android.view.View.VISIBLE;


public class Add_Card extends AppCompatActivity implements     CameraBridgeViewBase.CvCameraViewListener2 {
private static final String TAG="TRACK";
private static int REQUEST_CODE_CAMERA_PERMISSION = 101;

CameraBridgeViewBase javaCameraView;
Mat mRGBA,mRGBAT;
SurfaceView mSurfaceView;
SurfaceHolder mSurfaceHolder;

BaseLoaderCallback baseLoaderCallback ;





@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add__card);

    permission();

    javaCameraView = findViewById(R.id.my_camera);
    javaCameraView.setVisibility(VISIBLE);
    javaCameraView.setCvCameraViewListener(this);
    //setting surfaceView translucent
    baseLoaderCallback= new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch (status)
            {
                case BaseLoaderCallback.SUCCESS:
                {
                    javaCameraView.enableView();
                    break;
                }
                default:
                {
                    super.onManagerConnected(status);
                }

            }

        }
    };
}
private boolean permission(){
    if (ContextCompat.checkSelfPermission(this,
            Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]
                        {Manifest.permission.CAMERA},
                50);
    }else{
        return true;
    }
    return false;
}

@Override
protected void onDestroy() {
    super.onDestroy();
    if (javaCameraView !=null){
        javaCameraView.disableView();
    }
}

@Override
protected void onPause() {
    super.onPause();
    if (javaCameraView !=null){
        javaCameraView.disableView();
    }
}

@Override
protected void onResume() {
    super.onResume();
    if (OpenCVLoader.initDebug()){
        Log.d(TAG,"OPENCV IS CONFIGURED SUCCESSFULLY");
        baseLoaderCallback.onManagerConnected(BaseLoaderCallback.SUCCESS);

    }
    else {
        Log.d(TAG,"OPENCV IS HAVING ISSUES");
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3,this,baseLoaderCallback);
    }
}

@Override
public void onCameraViewStarted(int width, int height) {
    mRGBA = new Mat(width,height, CvType.CV_8UC4);
}

@Override
public void onCameraViewStopped() {
    mRGBA.release();
}

@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
    mRGBA=inputFrame.rgba();
    mRGBAT = mRGBA.t();
    Core.flip(mRGBA.t(),mRGBAT,1);
    Imgproc.resize(mRGBAT,mRGBAT,mRGBA.size());
    return mRGBAT;
}

@Override
public void onPointerCaptureChanged(boolean hasCapture) {

}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...