Вы можете увидеть результат на изображении ниже. Исходное изображение — просто серый пиксель, результат должен быть размытым.
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 предполагает, что это упорядочение по главному ряду.
Других решений пока нет …