c++ - 使用opencv进行高斯平滑

标签 c++ opencv gaussian

我在 OpenCV 中创建了以下高斯内核,并将其与 OpenCV 的 GaussianBlur 函数进行了比较。但是,我得到的是黑色图像而不是平滑图像。有人可以对此有所了解吗?

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;

最佳答案

您正在划分整数并生成零核。

1/16 更改为 1.0/16.0 以及其他值。

关于c++ - 使用opencv进行高斯平滑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13483479/

相关文章:

OpenCV:Mat 对象从什么索引开始?

python - 捕获 RTP 时间戳

c++ - cv::Mat 初始化使用数组

c++ - OpenCV:期望最大化的预测函数的输出

python - 如何让 minuit.Minuit 在 Python 中将高斯曲线拟合到我的数据?

c++ - NxM 矩阵的高斯消除

c++ - 模板中的静态成员变量,具有多个 dll

c++ - 如何在 C++ 中找到两个 vector 之间的最小(优化)距离

c++ - 为什么 g++ 从带有转换运算符和不可访问的函数调用运算符的类型中初始化 std::function<> 失败?

c++ - std::bad_function_call 的调用堆栈