您可以在下图中看到结果。原始图像只是一个灰色像素,结果应该是这样但模糊。
Opencv 没有使用高斯模糊的直接相邻像素,我猜它正在做某种内部填充。为什么这样做我不知道,我最初的猜测是它假设向量有多个通道,但事实并非如此。这是我如何创建用于计算的 cv::Mats 以及我如何调用 cv::gausianBlurr
std::vector<float> sobelCopy (sobel);
cv::Mat sobel_mat_copy(height,
width,
CV_32F,
sobelCopy.data());
cv::Mat sobel_mat(height,
width,
CV_32F,
sobel.data());
cv::GaussianBlur(sobel_mat_copy, sobel_mat, cv::Size(3,3), 0.0, 0.0, cv::BORDER_CONSTANT);