簡體   English   中英

將Android位圖轉換為OpenCV Mat並向后轉換

[英]Convert Android Bitmap to OpenCV Mat and backwards

我想簡單地將位圖從Android轉換為OpenCV的Mat對象。 Stack Overflow上經常討論此主題。 例如:

將Mat轉換為Android的Bitmap Opencv ;

使用android相機捕獲圖像后將Bitmap轉換為Mat ;

templateMatching mattoBitmap opencv for android

還有更多要找。 我在這個答案中遵循了這個問題,但我仍然無法以正確的方式完成任務。

最小代碼:

//First convert Bitmap to Mat
Mat ImageMat = new Mat ( image.getHeight(), image.getWidth(), CvType.CV_8U, new Scalar(4));
Bitmap myBitmap32 = image.copy(Bitmap.Config.ARGB_8888, true);
Utils.bitmapToMat(myBitmap32, ImageMat);

//Do smth.
Imgproc.cvtColor(ImageMat, ImageMat, Imgproc.COLOR_RGB2GRAY,4);

//Then convert the processed Mat to Bitmap
Bitmap resultBitmap = Bitmap.createBitmap(ImageMat.cols(),  ImageMat.rows(),Bitmap.Config.ARGB_8888);;
Utils.matToBitmap(ImageMat, resultBitmap);

//Set member to the Result Bitmap. This member is displayed in an ImageView
mResult = resultBitmap;

(注意:圖像是提供給這行代碼的位圖)

錯誤:

08-07 15:13:59.188:E / AndroidRuntime(2115):致命異常:主要

08-07 15:13:59.188:E / AndroidRuntime(2115):java.lang.NoClassDefFoundError:org.opencv.core.Mat

但我的進口是:

import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;


//OpenCV
import org.opencv.android.Utils;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Scalar;
import org.opencv.imgproc.Imgproc;

非常感謝任何幫助。 謝謝DanS

初始化后,您只能使用OpenCV。 所以你需要像這樣初始化它:

1.創建一個回調:

private BaseLoaderCallback mOpenCVCallBack = new BaseLoaderCallback(this) {
    @Override
    public void onManagerConnected(int status) {
        switch (status) {
        case LoaderCallbackInterface.SUCCESS:
            //DO YOUR WORK/STUFF HERE 
            break;
        default:
            super.onManagerConnected(status);
            break;
        }
    }
};

2.您需要在Activity的onResume方法中初始化回調:

@Override
    protected void onResume() {
        super.onResume();
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_8, this,
                mOpenCVCallBack);
    }

就是這樣,我希望它有用:D

你應該將OpenCV lib dependecy添加到你的android prj config(properties-> Android-> Library - > add [opencv andrid prg])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM