利用OpenCV实现最小值滤波

本文利用OpenCV自己写了一个最小值滤波的一个函数,利用这些小例子可以增加对OpenCV的理解和运用

Mat CrackPro::MinFilter(Mat src, int kernel)

{
src = image.clone();


int r = (kernel - 1) / 2;
Mat dst_ex;
Mat dst(src.size(), CV_8UC1);
copyMakeBorder(src, dst_ex, r, r, r, r, BORDER_CONSTANT, Scalar(255));


for (int i = r; i < dst_ex.rows - r; i++)
{
for (int j = r; j < dst_ex.cols - r; j++)
{
int minVal = dst_ex.at(i, j);
for (int s = -r; s < r + 1; s++)
{
for (int t = -r; t < r + 1; t++)
{
if (dst_ex.at(i + s, j + t) < minVal)
{
minVal = dst_ex.at(i + s, j + t);


}
}
}
dst.at(i - r, j - r) = minVal;
}


}


return dst;
}

你可能感兴趣的:(OpenCV图像处理)