我正在處理一個圖像處理項目,其中我充斥了原始圖像。圖像處理洪水填充圖像
現在
我需要刪除在這張照片是手的圖像周圍的白線的噪聲。我想通過將這些白線合併爲黑色背景色來刪除這些白線。
我需要將充滿水的區域的灰色(值爲
127
)更改爲白色。請注意背景顏色應該保持黑色。
這是this question後續。該圖像是用this answer中的代碼獲得的。
我正在處理一個圖像處理項目,其中我充斥了原始圖像。圖像處理洪水填充圖像
現在
我需要刪除在這張照片是手的圖像周圍的白線的噪聲。我想通過將這些白線合併爲黑色背景色來刪除這些白線。
我需要將充滿水的區域的灰色(值爲127
)更改爲白色。請注意背景顏色應該保持黑色。
這是this question後續。該圖像是用this answer中的代碼獲得的。
在您的問題中生成圖像的代碼可在your previous question中找到。
因此,我們知道充水區域的價值爲127
。
從該圖像開始,可以容易地獲得洪水填充區域的掩模爲:
Mat1b mask = (img == 127);
單通道掩模將有值要麼黑色0
或白色255
。
如果你想有一個彩色圖像,你需要創建一個同樣大小的黑色初始化圖像爲img
,並根據面膜自己喜歡的顏色(綠色在這裏)設置像素:
// Black initialized image, same size as img
Mat3b out(img.rows, img.cols, Vec3b(0,0,0));
Scalar some_color(0,255,0);
out.setTo(some_color, mask);
代碼以供參考:
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat1b img = imread("path_to_floodfilled_image", IMREAD_GRAYSCALE);
// 127 is the color of the floodfilled region
Mat1b mask = (img == 127);
// Black initialized image, same size as img
Mat3b out(img.rows, img.cols, Vec3b(0,0,0));
Scalar some_color(0,255,0);
out.setTo(some_color, mask);
// Show results
imshow("Flood filled image", img);
imshow("Mask", mask);
imshow("Colored mask", out);
waitKey();
return 0;
}
好涼。你到目前爲止嘗試了什麼? –
你在這幅圖像中氾濫了什麼? – Guiroux
看看兩種可能的解決方案: 1.縮小圖像。它將刪除小功能,但不完全。 2.做侵蝕,然後擴張。它將完全移除小於侵蝕/擴張半徑的特徵。 – ZuOverture