我想將一些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