Dans l'application que je développe, j'ouvre la caméra en utilisant OpenCV4Android
en utilisant CameraBridgeViewBase.CvCameraViewListener2
et quand je touche l'écran, j'ai placé cette image comme une image à l'intérieur d'un ImageView
comme indiqué ci-dessous dans le code. le problème est l'image définie à la imageview
est toujours de couleur différente de l'aperçu sur l'appareil photo comme indiqué dans l'image. Je crois que ce problème a quelque chose à voir avec la conversion que j'ai faite qui est indiqué dans le code ci-dessousComment convertir l'objet Mat en bitmap tout en conservant la couleur?
Ma question est de savoir comment convertir l'objet Mat en un Bitmap
en préservant la même couleur?
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 fonctionne avec les images BGR. Vous convertissez le cadre en RVB. –
Comme Dan a déclaré que l'ordre des couleurs est incorrect, les canaux rouge et bleu sont dans un ordre différent. – EdChum
@ DanMašek voulez-vous dire cette ligne: Bitmap.createBitmap (mRGBT.cols(), mRGBT.rows(), Bitmap.Config.RGB_565); .. si c'est ce que vous voulez dire, il n'y a pas d'option pour BGR !! – user2121