gpt4 book ai didi

java - Android 上的 OpenCV 转换为灰度无法正常工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:27:17 25 4
gpt4 key购买 nike

我正在尝试将一些 OpenCV Mat 转换为灰度以用于轮廓检测算法。由于某种原因,转换后的图像全黑。我的代码(b是Android Bitmap):

Mat tmp = new Mat (b.getWidth(), b.getHeight(), CvType.CV_8UC1);
Utils.bitmapToMat(b, tmp);
Imgproc.cvtColor(tmp, tmp, Imgproc.COLOR_BGR2GRAY);
//there could be some processing
Imgproc.cvtColor(tmp, tmp, Imgproc.COLOR_GRAY2BGRA, 4);
Utils.matToBitmap(tmp, b);

现在我正在绘制这个位图,它是全黑的。当我将轮廓检测应用于此位图(代替注释)时,没有匹配项,因此我认为问题出在转换上。删除转换后(只需调用 bitmapToMat 和 matToBitmap)然后位图不是全黑的,所以转换为 Mat 也可以。位图是ARGB_8888,没有错误,只是输出位图全黑。

编辑:只是为了确保我尝试用 ocv imwrite 保存位图 - 它仍然全黑所以问题是 100% 在 cvtColor...

最佳答案

如果位图 b 来自 android 设备,则尝试使用 COLOR_RGB2GRAY 而不是 COLOR_BGR2GRAY 因为 BGR 是 OpenCV 的默认像素格式图片,不是所有图片。

试试这段代码:

Mat tmp = new Mat (b.getWidth(), b.getHeight(), CvType.CV_8UC1);
Utils.bitmapToMat(b, tmp);
Imgproc.cvtColor(tmp, tmp, Imgproc.COLOR_RGB2GRAY);
//there could be some processing
Imgproc.cvtColor(tmp, tmp, Imgproc.COLOR_GRAY2RGB, 4);
Utils.matToBitmap(tmp, b);

关于java - Android 上的 OpenCV 转换为灰度无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15912392/

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