我想在opencv中實現高斯模糊函數,但是當我嘗試我得到一個噪聲圖像。這裏是我的代碼:OpenCv實現高斯模糊
int main(int argc, char** argv)
{
src = imread("fruits.jpg", 0);
gauss3x3 = Mat(src.cols,src.rows,src.type()); //src.clone();
Mat kernelX = getGaussianKernel(3, 1);
Mat kernelY = getGaussianKernel(3, 1);
Mat kernelXY = kernelX * kernelY.t();
filter(src,gauss3x3,kernelXY);
namedWindow(window_name4, WINDOW_AUTOSIZE);
imshow(window_name4,gauss3x3);
}
void filter(Mat src, Mat dst, Mat kernel) {
cout << "filter" << endl;
for(int i=0; i<src.rows - 0; i++) {
for(int j=0; j<src.cols - 0; j++) {
float p = 0;
for(int k=0; k<kernel.rows; k++) {
for(int l=0; l<kernel.cols; l++) {
if(i+k < src.rows && j+l < src.cols) {
p += (src.at<uchar>(i + k,j + l) * kernel.at<uchar>(k,l));
}
}
}
if(i + kernel.rows/2 < src.rows && j + kernel.cols/2 < src.cols) {
dst.at<uchar>(i + kernel.rows/2,j + kernel.cols/2) = p/sum(kernel)[0];
}
}
}
}
我對解決方案沒有任何想法。任何幫助,將不勝感激。
爲什麼你不想使用OpenCV [GaussianBlur](http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=gaussianblur#gaussianblur)? – Antonio 2015-04-02 21:14:37
原因,這是我的作業。 – cuneytyvz 2015-04-02 21:21:51