Android OpenCVバイナリを使用して画像を切り抜く際に問題が発生しています。Androidバイナリを使用してopenCVマトリックスを使用して画像を切り出す
これは私が画像の左上の象限トリミングしようとやっているものです:私は何を得る
Initialization {
mYuv = new Mat(mFrameSize.height + mFrameSize.height/2, mFrameSize.width, CvType.CV_8UC1);
mGraySubmat = mYuv.submat(0, mFrameSize.height, 0, mFrameSize.width);
}
processFrame(byte[] data) {
mYuv.put(0, 0, data);
Imgproc.cvtColor(mGraySubmat, mRgba, Imgproc.COLOR_GRAY2BGR, 4);
bmp = Bitmap.createBitmap(mFrameSize.width/2, mFrameSize.height/2, Bitmap.Config.ARGB_8888);
Rect roi = new Rect(0,0,mFrameSize.width/2,mFrameSize.height/2);
Mat faceMat = new Mat(mRgba,roi);
Utils.matToBitmap(faceMat.clone(), bmp);
}
が文字化けした画像です。私は何をしていると言う他の投稿を見てきましたが、うまくいきません。実際には画像はそこにあるように見えますが、比例していない影の画像もあります。
私はこれを手動で行うことができ、それはファイルで動作します - 以下を参照してください。私は何か間違っているのですか?
processFrame(byte[] data) {
for (int i = 0; i < frameSize; i++) {
int y = (0xff & ((int) data[i]));
rgba[i] = 0xff000000 + (y << 16) + (y << 8) + y;
}
// Example of cropping the upper left corder
bmp = Bitmap.createBitmap(mFrameSize.width/2, mFrameSize.height/2, Bitmap.Config.RGB_565);
bmp.setPixels(rgba, 0/* offset */, mFrameSize.width /* stride */, 0, 0, mFrameSize.width/2, mFrameSize.height/2);
2つのソースは、最初のデータを使用しないので比較できません。とにかく、あなたのビットマップとデータの種類が一致している必要があります。 – rics
ご迷惑をおかけしましたが、不足している部分を追加しました – scoleman2272
あなたのコードを変更した後で、実際の解決策が見つからなかったので、あなたの質問をアップしました。 – rics