gpt4 book ai didi

android - 将 Android 位图转换为 OpenCV Mat 并向后转换

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:21 28 4
gpt4 key购买 nike

我想简单地将位图从 Android 转换为用于 OpenCV 的 Mat 对象。 Stack Overflow 上经常讨论这个主题。例如:

convert Mat to Bitmap Opencv for Android ;

convert Bitmap to Mat after capture image using android camera ;

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): FATAL EXCEPTION: main

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;

非常感谢任何形式的帮助。谢谢丹斯

最佳答案

您只能在初始化后使用 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

关于android - 将 Android 位图转换为 OpenCV Mat 并向后转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18103994/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com