工具opencv
算法逻辑
1、图片进行二值化处理
cv::cvtColor(img, img_gray, cv::COLOR_BGR2GRAY);
threshold(img_gray, mask, 1, 255, cv::THRESH_BINARY);
2、对二值化进行边缘检测
Canny(mask, mask, 100, 150, 3, true);
3、对边缘附近的像素进行高斯处理,选取的范围可以设定例如的d=4
int d = 4;
for (int xx = 0; xx < mask.cols; xx++)
{
for (int yy = 0; yy < mask.rows; yy++)
{
if ((int)mask.at<uchar>(yy, xx) == 255
&& yy - d >= 0
&& xx - d >= 0
&& yy + d < mask.rows
&& xx + d < mask.cols
)
{
Mat rol = img(Rect(xx - d, yy - d, 2 * d, 2 * d));
//blur(rol, rol, cv::Size(d-1, d - 1));
cv::GaussianBlur(rol, rol, Size(d - 1, d - 1), 2);
}
}
}