簡體   English   中英

如何使用OpenCV Java在矩陣中轉換矩形的顏色(ROI)?

[英]How to convert Color of a Rectangle (ROI) in a matrix with 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.medianBlur()效果更改Imgproc.cvtColor()調用,例如:

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

有一個模糊的矩形可見。 我認為在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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM