2016-11-28 4 views
1

ich für eine Funktion in OpenCV gesucht, die für diff in Matlab ähnlich ist, aber ich habe keinen finden,
Ich möchte eigentlich das wls Filter Matlab code in OpenCV
Matlab diff in OpenCV

+1

'diff' ist einfach ein Filter zu implementieren ist. – beaker

+0

Ich habe es tatsächlich verwendet, cv :: Mat Kernel = (cv :: Mat_ (2, 1) << -1, 1); \t cv :: filter2D (Bild, L, -1, Kernel, cv :: Punkt (-1, -1), 0.0, cv :: BORDER_DEFAULT); Ergebnisse sind sehr unterschiedlich –

+0

Legen Sie keine Updates in den Kommentaren. Bearbeiten Sie Ihre Frage, um Ihren Code einzuschließen und Beispieleingabe, Ihre erwartete Ausgabe und die Ausgabe, die Sie erhielten, hinzuzufügen. Bitte lies, wie man ein [mcve] postet. – beaker

Antwort

2

Als @beaker implementieren in den Kommentaren darauf hingewiesen, es ist ein [-1 1] Kernel, das ist nur der Code mit einem Kern von `[-1 1]`

cv::Mat Kernely = (cv::Mat_<float>(2, 1) << -1, 1); 
cv::Mat Kernelx = (cv::Mat_<float>(1, 2) << -1, 1); 
cv::Mat dx, dy; 
cv::filter2D(L, dy, -1, Kernely, cv::Point(-1, -1), 0.0, cv::BORDER_CONSTANT); 
// Remove padding and take the abs of the output 
dy = cv::Mat(dy, cv::Rect(0, 1, dy.cols, dy.rows - 1)); 
dy = cv::abs(dy); 
cv::filter2D(L, dx, -1, Kernelx, cv::Point(-1, -1), 0.0, cv::BORDER_CONSTANT); 
dx = cv::Mat(dx, cv::Rect(1, 0, dx.cols - 1, dx.rows)); 
dx = cv::abs(dx);