私は自分自身で問題を解決しました。 それは我々がここでのOpenCV関連するコード を使用するためにライブラリをロードする必要があることに言及することにより、私はこのAndroid & OpenCV : Utils.bitmapToMat crashesを参照していますが、ライブラリをロードするために私のコードです:
private BaseLoaderCallback mLoaderCallBack = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
if(status == LoaderCallbackInterface.SUCCESS){
}else{
super.onManagerConnected(status);
}
}
};
public void onResume(){
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_1_0, this, mLoaderCallBack);
}
を変更する必要があることに注意してくださいあなたが使用しているバージョンと一致するopencvのバージョン。
私たちはここでARGB_8888 で適切なビットマップ形式を持っている場合bitmaptomatにのみ動作します。このhttps://groups.google.com/forum/#!topic/android-opencv/8EoxpTb4W3E に言及していマットにビットマップを変換するために私のコードです:この関数は、ここで呼び出されます
private Bitmap JPGtoRGB888(Bitmap img){
Bitmap result = null;
int numPixels = img.getWidth() * img.getHeight();
int[] pixels = new int[numPixels];
// get jpeg pixels, each int is the color value of one pixel
img.getPixels(pixels,0,img.getWidth(),0,0,img.getWidth(),img.getHeight());
// create bitmap in appropriate format
result = Bitmap.createBitmap(img.getWidth(),img.getHeight(), Bitmap.Config.ARGB_8888);
// Set RGB pixels
result.setPixels(pixels, 0, result.getWidth(), 0, 0, result.getWidth(), result.getHeight());
return result;
}
Bitmap bmp32 = JPGtoRGB888(bitmap);
Mat sourceImage = new Mat();
Utils.bitmapToMat(bmp32, sourceImage);
次にあなたがsourceImage を処理することができますが、これは便利 乾杯です願っています!
マニフェストファイルに外部ストレージの読み取り/書き込みのアクセス許可を定義していますが、携帯電話で実行するとクラッシュすることがあります( –
)。トレースバックもここにあります。 – ZdaR