私が開発中のアプリケーションでは、CameraBridgeViewBase.CvCameraViewListener2
を使用してOpenCV4Android
を使用してカメラを開きます。画面に触れると、コード内に次のようにImageView
の画像としてそのフレームを設定しました。 imageview
に設定されている画像は、画像のように常にカメラのプレビューとは異なる色です。この問題は、以下のコードに記載されている変換と関係があると考えています。Matオブジェクトをビットマップに変換するにはどうすればいいですか?
私の質問はMatオブジェクトをBitmap
に変換する方法です。
PIC
@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
Log.w(TAG, "onCameraFrame");
if (mRGBT != null) {
mRGBT.release();
}
mRGBT = inputFrame.rgba().t();
Core.flip(mRGBT, mRGBT, 1);
Imgproc.resize(mRGBT, mRGBT, inputFrame.rgba().size());
if (touched) {
touched = false;
Imgproc.cvtColor(mRGBT, mRGBT, CvType.CV_8U);
final Bitmap bitmap = Bitmap.createBitmap(mRGBT.cols(), mRGBT.rows(), Bitmap.Config.RGB_565);
Utils.matToBitmap(mRGBT, bitmap);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mIV.setImageBitmap(bitmap);
}
});
}
return mRGBT;
}
OpenCVはBGR画像で動作します。フレームをRGBに変換します。 –
Danが色順が正しくないと述べているので、赤と青のチャンネルの順番が異なります。 – EdChum
@DanMašekはこの行を意味しますか?Bitmap.createBitmap(mRGBT.cols()、mRGBT.rows()、Bitmap.Config.RGB_565 ); ..それがあなたが意味するものなら、BGRのオプションはありません!! – user2121