奇怪的 gaussianBlur 内核乘法结果偏移量被意外填充。

strange gaussianBlur result offset of kernel multiplication unwantedly padded.

您可以在下图中看到结果。原始图像只是一个灰色像素,结果应该是这样但是模糊了。

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);

图片

已修复,这与我如何排序向量有关,我有列专业,cv::Mat 假设它是行专业排序。