diff --git a/src/image_cv.cpp b/src/image_cv.cpp index 5f45510..4453c2e 100644 --- a/src/image_cv.cpp +++ b/src/image_cv.cpp @@ -76,12 +76,6 @@ cv::Mat image_binerize(cv::Mat &frame) cv::bitwise_or(output, binarizedFrame, output); - // V 通道反光剔除: 高亮度(V>180) 且 低饱和度(S<40) → 白反光,标记为非赛道 - cv::Mat hi_v, lo_s; - cv::threshold(hsvChannels[2], hi_v, 180, 255, cv::THRESH_BINARY); - cv::threshold(hsvChannels[1], lo_s, 40, 255, cv::THRESH_BINARY_INV); - output.setTo(0, hi_v & lo_s); - return output; } @@ -110,7 +104,7 @@ cv::Mat image_binerize(cv::Mat &frame) // ============================================================ cv::Mat find_road(cv::Mat &frame) { - static cv::Mat kernel = cv::getStructuringElement(cv::MORPH_CROSS, cv::Size(3, 3)); + static cv::Mat kernel = cv::getStructuringElement(cv::MORPH_CROSS, cv::Size(5, 5)); cv::morphologyEx(binarizedFrame, morphologyExFrame, cv::MORPH_OPEN, kernel); static cv::Mat mask; @@ -179,6 +173,9 @@ void image_main() cv::merge(labCh, labFrame); cv::cvtColor(labFrame, resizedFrame, cv::COLOR_Lab2BGR); + // ── 1.6 高斯模糊 → 融合反光噪点 ──────────────────── + cv::GaussianBlur(resizedFrame, resizedFrame, cv::Size(3, 3), 0); + // ── 2. HSV 双通道 Otsu 二值化 ───────────────────── // 赛道区域 = 白色(255),背景/边界 = 黑色(0) binarizedFrame = image_binerize(resizedFrame);