Странный результат смещения gaussianBlur нежелательного дополнения умножения ядра.

Вы можете увидеть результат на изображении ниже. Исходное изображение - просто серый пиксель, результат должен быть размытым.

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

Образ Результирующее изображение

1 ответ

Решение

Исправлено, все связано с тем, как я упорядочил вектор, у меня был главный столбец, cv::Mat предполагает, что это упорядочение по главному ряду.

Другие вопросы по тегам