0

下の画像で結果を見ることができます。元の画像は単なる灰色のピクセルであり、結果はぼやけているはずです。

Opencv は、Gaussian Blur に隣接するピクセルを使用していません。何らかの内部パディングを行っていると思います。なぜそうしているのかはわかりませんが、最初の推測では、ベクトルに複数のチャネルがあると想定されていますが、そうではありません。計算用に 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);

画像結果の画像

4

1 に答える 1

0

修正されました。ベクトルを注文した方法にすべて関係しています。列優先で、cv::Mat は行優先の順序であると想定しています。

ここに画像の説明を入力

于 2016-09-21T13:11:23.700 に答える