0
アンドロイドopencvのカラーブロブ検出のアルゴリズムを使用して静止画像の色を検出しようとしています。Android OpenCv Submat nullオブジェクト参照
私はsubmat()領域周辺に問題がありますが、opencvを正しくインストールしました。このエラーを取得: PS:mRgbaはマット
として宣言されてjava.lang.NullPointerException: Attempt to invoke virtual method 'org.opencv.core.Mat org.opencv.core.Mat.submat(org.opencv.core.Rect)' on a null object reference
at com.example.backup.contour_image.MainActivity.onTouch(MainActivity.java:103)
at android.view.View.dispatchTouchEvent(View.java:9406)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2668)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2257)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2668)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2257)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2668)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2257)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2668)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2257)
私のコード
public boolean onTouch(View v, MotionEvent event)
{
//mDetector = new ColorBlobDetector();
Bitmap bm =((BitmapDrawable)iv.getDrawable()).getBitmap();
Mat touchedRegionHsv = new Mat();
Log.e(TAG,"Touched!");
Utils.bitmapToMat(bm,touchedRegionHsv,true);
Scalar lower = new Scalar(22,255,255);
Scalar upper = new Scalar(38,100,100);
Rect roi = new Rect();
int x = (int)event.getX();
int y = (int)event.getY();
roi.x = (x>4) ? x-4 : 0;
roi.y = (y>4) ? y-4 : 0;
roi.width = 8;
roi.height = 8;
Mat touchedRegionRgba = mRgba.submat(roi); //<--------------- line of error
Mat touchedRegionRgba_clone = touchedRegionRgba.clone();
Imgproc.cvtColor(touchedRegionRgba,touchedRegionHsv,Imgproc.COLOR_RGB2HSV);
Core.inRange(touchedRegionHsv,lower,upper,touchedRegionRgba_clone);
List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
Mat heirarchy = new Mat();
Imgproc.findContours(touchedRegionRgba_clone,contours,heirarchy,Imgproc.RETR_EXTERNAL,Imgproc.CHAIN_APPROX_NONE);
return false;
}
あなたのmRgba変数はnullです:)それはどこですか? –
ああ申し訳ありませんが、私はmRgbaについて言及するのを忘れていました。 mRgbaはこのメソッドの外部でpublicとして宣言されています。これはMat()です。 – Shulz