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