如何从Opencv中的图像矩阵中提取数值梯度矩阵
How to extract Numerical gradient matrix from the image matrix in Opencv
我正在寻找一种从矩阵中获得数值梯度的方法。还是一样函数在matlab的默认文档中实现。http://www.mathworks.com/help/techdoc/ref/gradient.html但我在露天电视台找不到。
我想使用opencv将其移植到C++。
我应该用sobel来表示水平和垂直梯度还是任何其他功能或方法???
Mat grad_x, grad_y;
Mat abs_grad_x, abs_grad_y;
/// Gradient X
Sobel( mat, grad_x, CV_32F, 1, 0, 3);
imshow("xx",grad_x);
convertScaleAbs( grad_x, abs_grad_x );
/// Gradient Y
Sobel( mat, grad_y, CV_32F, 0, 1, 3);
convertScaleAbs( grad_y, abs_grad_y );
/// Total Gradient (approximate)
Mat res;
addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0, res );
[编辑]解决方案
Mat grad_x,abs_grad_x,grad_y,abs_grad_y;
int type=CV_64F ;
Gradient.setTo(Scalar::all(0));
/// Gradient Y
Sobel( input, grad_x, type, 1, 0, 3);
convertScaleAbs(grad_x,abs_grad_x);
cv::accumulateSquare(abs_grad_x,Gradient);
/// Gradient Y
Sobel(input, grad_y, type, 0, 1, 3);
convertScaleAbs(grad_y,abs_grad_y);
cv::accumulateSquare(abs_grad_y,Gradient);
imshow("gradient Mag",Gradient);
你可以在这里找到梯度计算。就像你说的计算sobel梯度一样,这个例子就是这样做的。
相关文章:
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 如何从 std::atomic 中提取指针 T<T>?
- 为什么istream不支持右值提取
- 如何设置一个范围来提取我想要获得的信息
- 如何打开并写入一个名称取自C++中字符串的文件
- 视觉工作室项目.提取源文件夹名称
- C++17 - 使用自定义分配器的节点提取/重新插入 - 适用于 clang++/libc++,但不适用于 libstd
- 如何在 SCIP C++ 接口中获取 MILP 约束矩阵中的系数值
- 从字符串中提取整数并形成一个数组
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- asn1c 不会从 asn.1 模块中提取八位字节字符串的默认值
- 从 std::vector<无符号字符>切片中提取 int?
- 在C++中返回不正确的楼层函数值
- 在C++中使用重载提取运算符时出现问题
- 当我尝试在 Main 中调用插入函数时,它不是取数字?
- 在 Qt(C++) 中使用 QProcess 解压缩 - 提取目录问题
- 如何使用 cin 从输入的字符串中提取特定的数值
- 在编译时间之前抓取常数值
- 如何从Opencv中的图像矩阵中提取数值梯度矩阵
- 如何从输入字符串提取数值?c++