gpt4 book ai didi

android - Android 版 OpenCV : Simple example to convert Image to Greyscale

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

作为初学者,我只想通过 OpenCV 将位图转换为灰度。我已拥有一切正在运行,但一旦我想将图像转换为灰度,它就会崩溃。任何人都可以帮忙吗?我希望这些 fragment 足够了,如果不够我可以附上其余部分。

部分java文件:

                // convert to opencv structure
Mat image = new Mat();
Mat grayimage = new Mat();
Utils.bitmapToMat(b2, image);

// call opencv for processing
grayimage = convertToGray (image);

// convert back
Utils.matToBitmap(grayimage, b2);

JNI cpp 文件:

JNIEXPORT jlong JNICALL Java_com_my_sample_MainMenuActivity_convertToGray (JNIEnv*, jobject, jlong addrRGBA)
{
LOGI("Converting to Gray.");
Mat *mRGBA = (Mat*)addrRGBA;

Mat *_retval_;
cvtColor(*mRGBA, *_retval_, CV_RGB2GRAY);

LOGI("Successfully finished Converting to Gray.");
return (jlong) _retval_;
}

转换图像后,它永远无法记录成功。似乎位图没有正确转换为垫子。位图本身确实存在,我可以在 ImageView 上显示它。有人知道我(显然)做错了什么吗?

05-14 21:26:27.082: I/native(22394): Converting to Gray.
05-14 21:26:27.082: A/libc(22394): Fatal signal 11 (SIGSEGV) at 0xcd10001d (code=1), thread 22394 (ialabs.mysample)

很抱歉,如果这个问题在其他地方得到了回答,我还没有找到 Mat 的例子,似乎只有一些带有 IplImage。

最佳答案

您有两个空的 Mat 对象。你无法将空的东西变成灰色。

试试这个:

Mat tmp = new Mat (b.getWidth(), b.getHeight(), CvType.CV_8UC1);
Utils.bitmapToMat(b, tmp);
Imgproc.cvtColor(tmp, tmp, Imgproc.COLOR_RGB2GRAY);

b 是您作为 Bitmap 的图像。

Utils.matToBitmap(tmp, b);

添加它以将 Mat 对象转换回 Bitmap

关于android - Android 版 OpenCV : Simple example to convert Image to Greyscale,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16551602/

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