2013-10-18 91 views
4

我試圖顏色轉換與OpenCV的Java中的矩陣的投資回報率與下面的代碼如何使用OpenCV Java將矩陣中的矩形(ROI)的顏色轉換爲矩陣?

public Mat detect(Mat image){ 
    Rect roi = new Rect(new Point(50, 50), new Point(image.width() - 50, image.height() - 50)); 
    Mat mask = image.submat(roi); 
    Mat temp = new Mat(); 
    Imgproc.cvtColor(mask, temp, Imgproc.COLOR_BGRA2GRAY,0); 
    temp.copyTo(mask); 
    return image; 
} 

但結果是一樣的給定的圖像。如果我改變Imgproc.cvtColor()與例如Imgproc.medianBlur()調用效果:

... 
    Imgproc.medianBlur(mask, temp, 11); 
    ... 

有一個模糊的長方形可見。我認爲雖然Imgproc.cvtColor()的過程對原始圖像的引用被一些新創建的替換。那麼我怎麼可以轉換矩陣中的ROI的顏色而不會丟失引用?

我感謝任何幫助,謝謝!

P.S:我想添加一些示例圖片,但我的聲望不夠高。我很抱歉,希望你能想象我的問題,即使沒有樣品。

回答

1

你不能有圖像,那就是部分 1通道,否則4通道。

模糊示例正常工作,因爲它沒有改變通道的數量。

你有你的灰色(子)IMG轉換再次RGBA,複製

Mat temp = new Mat(); 
Imgproc.cvtColor(mask, temp, Imgproc.COLOR_BGRA2GRAY,0); 
Mat temp_rgba = new Mat(); 
Imgproc.cvtColor(temp, temp_rgba, Imgproc.COLOR_GRAY2BGRA,0); 
temp_rgba.copyTo(mask);