我想将一些OpenCV Mat转换为灰度等高线检测算法。出于某种原因,转换后的图像全是黑色的。我的代码(b是Android位图):Android上的OpenCV转换为灰度不起作用
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 - 它仍然是全黑的,所以这个问题是在cvtColor 100%......
诶,它仍然是相同的:/输出位是黑色 – Pax0r 2013-04-10 08:15:59
尝试使用'ARGB',而不是'RGB'。 – 2013-04-10 13:35:45
好的,我觉得自己很愚蠢,毕竟它与RGB协同工作,但是由于某种原因,当我在白色背景上画黑色笔画时,背景也变成了黑色。因此黑色背景上的黑色笔触使图像变黑。当我尝试白色笔画时,它可以工作... – Pax0r 2013-04-12 18:04:43