cv2.GaussianBlur(img, (5, 5), 1) 底层代码
时间: 2024-05-01 14:23:52 浏览: 3
cv2.GaussianBlur 函数的底层代码是使用C++编写的,以下是简化后的代码:
```
void cv::GaussianBlur( InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY, int borderType )
{
CV_INSTRUMENT_REGION()
int type = src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type);
CV_Assert( cn == 1 || cn == 3 || cn == 4 );
if( sigmaY <= 0 )
sigmaY = sigmaX;
int ktype = std::max(depth, CV_32F);
Mat kernel = getGaussianKernel( ksize, sigmaX, ktype );
if( cn > 1 )
kernel = Mat(kernel, Rect(0, 0, 1, ksize.height));
sepFilter2D( src, dst, depth, kernel, kernel, Point(-1,-1), 0, borderType );
}
```
该函数会根据输入的图像 `src` 、卷积核大小 `ksize` 、标准差 `sigmaX` 和 `sigmaY` 进行高斯模糊操作,并将结果存储在输出图像 `dst` 中。具体实现方式是通过先生成高斯核,再使用 `sepFilter2D` 函数对图像进行卷积操作。函数会根据输入图像的通道数和卷积核的大小自动选择使用一维或二维卷积进行处理。最后返回处理后的图像。