我在OpenCV中搜索了一个与matlab中的diff类似的函数,但我找不到一个,
我实际上想在OpenCV中实现wls过滤器matlab的code
答案 0 :(得分:2)
正如@beaker在评论中指出它是一个[-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);