[英]gaussian smoothing using opencv
I created the following gaussian kernel in OpenCV and comparing it with the GaussianBlur function of OpenCV. 我在OpenCV中创建了以下高斯内核,并将其与OpenCV的GaussianBlur函数进行了比较。 However, I'm getting a black image instead of a smooth image.
但是,我得到的是黑色图像而不是平滑图像。 Can someone throw some light on this?
有人可以对此有所启发吗?
Mat src, dst1,dst2;
Mat gaussiankrnl(3,3,CV_32F);
Point anchor;
double delta;
int ddepth;
anchor = Point( -1, -1 );
delta = 0;
ddepth = -1;
src = imread("coins.pgm");
gaussiankrnl.at<double>(0,0) = 1/16;
gaussiankrnl.at<double>(0,1) = 2/16;
gaussiankrnl.at<double>(0,2) = 1/16;
gaussiankrnl.at<double>(1,0) = 2/16;
gaussiankrnl.at<double>(1,1) = 4/16;
gaussiankrnl.at<double>(1,2) = 2/16;
gaussiankrnl.at<double>(2,0) = 1/16;
gaussiankrnl.at<double>(2,1) = 2/16;
gaussiankrnl.at<double>(2,2) = 1/16;
filter2D(src, dst1, ddepth , gaussiankrnl, anchor, delta, BORDER_DEFAULT );
GaussianBlur(src, dst2, Size(3,3), 1.0);
imshow("result1", dst1 );
imshow("result2", dst2 );
cvWaitKey(0);
return 0;
You are dividing integers and making zero kernel. 您正在将整数除以零内核。
Change 1/16
to 1.0/16.0
as well as other values. 将
1/16
更改为1.0/16.0
以及其他值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.