Mel*_*mos 5 java opencv roi image-processing
我正在尝试使用以下代码使用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;
}
Run Code Online (Sandbox Code Playgroud)
但结果与给定图像相同.如果我使用Imgproc.medianBlur()效果更改Imgproc.cvtColor()调用,例如:
...
Imgproc.medianBlur(mask, temp, 11);
...
Run Code Online (Sandbox Code Playgroud)
有一个模糊的矩形可见.我认为在Imgproc.cvtColor()的过程中,对原始图像的引用被一些新创建的替换.那么我怎样才能在不丢失引用的情况下转换矩阵中ROI的颜色呢?
我感谢任何帮助,谢谢!
PS:我想添加一些样本图片,但我的声誉不够高.对此我很抱歉,希望你能想象我的问题,即使没有样品.
你不能有一个图像,即部分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);
Run Code Online (Sandbox Code Playgroud)