2017-06-06 16 views
1

私はMatオブジェクトで変換する必要がある私のBitmapオブジェクトを持っています。誰かがbitmaptoMat関数を使用したことがわかりましたが、私のUtilsパッケージではMat出力を得るためにポイントリスト入力を持つ多くの機能があります私のビットマップfile.I別の解決策を試みた:Imgcodecs.imreadは、文字列の入力が必要な、私はイメージのパスが必要だと思うが、私はuri.toString()を与えようとしましたが、それdoesnt work.What私は何ができますか? は、これは私のビットマップです:ビットマップからマット? android opencv

Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 

答えて

1

インポート

import org.opencv.android.Utils; 

そして機能を使用します。

Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 
Mat imgMAT = new Mat (bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC1);  
Utils.bitmapToMat(bitmap, imgMAT); 
+0

iは次it..butた、私は、スーパーピクセルオブジェクトを作成した後にする必要が(gは私のMatオブジェクトです)、 "対応するjni関数android studioを解決できません" – Jt1995

0

あなたはマットファイルを生成するために、ビットマップへのポインタを使用することができます。 私はQTでこれを行なったし、それは次のようになります。

QImage img((uchar*)frame->data(), frame->width(), frame->height(), QImage::Format::Format_RGB888); 

私はOpenCVの中でそれをやったが、私は正確なコンストラクタを覚えていない: このような何かをしよう:

cv::Mat bitmapMat = cv::Mat(bitmap.height, bitmap.width, CV_8UC1, bitmap.data()); 

"SuperpixelSLIC X = Ximgproc.createSuperpixelSLIC(G、Ximgproc.SLIC、100,3);" 又は

cv::Mat bitmapMat = cv::Mat(Size _size, int _type, void* _data, size_t _step=AUTO_STEP); 
+0

Mat g = new Mat(bitmap.getHeight()、bitmap.getWidth()、CvType.CV_8UC1)で試したところ、しかし、私はエラー – Jt1995

+0

を取得する1チャンネルの画像または3チャンネルの画像がありますか?また、opencvのサイズが異なる方法で格納されている可能性がありますので、あなたは幅、高さを行う必要があります。どのエラーが出ましたか?あなたはCvTypeが必要ありません。 (1グレースケールの場合はCV_8UC1、rgbの場合はCV_8UC3) – hagor

関連する問題