您好,登錄后才能下訂單哦!
要在OpenCV C++中去除圖像中的陰影,可以使用以下步驟:
下面是一個簡單的OpenCV C++代碼示例,演示如何去除圖像中的陰影:
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main() {
// 讀取圖像
Mat img = imread("image.jpg");
// 轉換為灰度圖像
Mat gray;
cvtColor(img, gray, COLOR_BGR2GRAY);
// 高斯濾波
Mat blurImg;
GaussianBlur(gray, blurImg, Size(15, 15), 0);
// 形態學操作
Mat morphImg;
morphologyEx(blurImg, morphImg, MORPH_OPEN, getStructuringElement(MORPH_RECT, Size(5, 5)));
// 閾值處理
Mat threshImg;
threshold(morphImg, threshImg, 0, 255, THRESH_BINARY | THRESH_OTSU);
// 形態學操作
Mat closeImg;
morphologyEx(threshImg, closeImg, MORPH_CLOSE, getStructuringElement(MORPH_RECT, Size(5, 5)));
// 距離變換
Mat distImg;
distanceTransform(closeImg, distImg, DIST_L2, 5);
normalize(distImg, distImg, 0, 1, NORM_MINMAX);
// 創建掩模
Mat mask = distImg < 0.3;
// 修正原始圖像
Mat result;
img.copyTo(result, mask);
// 顯示結果
imshow("Result", result);
waitKey(0);
return 0;
}
在這個示例中,我們首先讀取了一張圖像,然后按照上述步驟依次進行處理,并最終得到去除陰影的圖像。您可以根據實際情況調整參數和操作,以獲得更好的效果。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。