gpt4 book ai didi

android - 将 Mat 转换为位图 Opencv for Android

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

我正在尝试使用以下代码将 MAt 转换为位图:

    Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Mat tmp = new Mat (width,height,CvType.CV_8UC1,new Scalar(4));
try {
//Imgproc.cvtColor(seedsImage, tmp, Imgproc.COLOR_RGB2BGRA);
Imgproc.cvtColor(seedsImage, tmp, Imgproc.COLOR_GRAY2RGBA, 4);
Utils.matToBitmap(tmp, bmp);}
catch (CvException e){Log.d("Exception",e.getMessage());}

我的 seedsImage 是一个 Mat 对象。得到的异常是 10-09 22:15:09.418: D/Exception(2461): ..\..\modules\java\generator\src\cpp\utils.cpp:105: error: ( -215) src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols 在函数 void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, _jclass*, jlong​​, _jobject*, jboolean )
我试图搜索但没有解决方案适合我。谁能帮忙?

最佳答案

1) OpenCV Mat 构造函数期望 <rows, cols>对而不是 <width, height>作为它的论点。因此,您必须将第二行更改为

Mat tmp = new Mat (height, width, CvType.CV_8U, new Scalar(4));

2) Imgproc.cvtColor可以更改 tmp 的尺寸目的。所以在颜色转换后创建位图是安全的:

Bitmap bmp = null;
Mat tmp = new Mat (height, width, CvType.CV_8U, new Scalar(4));
try {
//Imgproc.cvtColor(seedsImage, tmp, Imgproc.COLOR_RGB2BGRA);
Imgproc.cvtColor(seedsImage, tmp, Imgproc.COLOR_GRAY2RGBA, 4);
bmp = Bitmap.createBitmap(tmp.cols(), tmp.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(tmp, bmp);
}
catch (CvException e){Log.d("Exception",e.getMessage());}

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

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