2013-10-18 66 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);