c++ - Reduce 函数计算每列的总和

标签 c++ opencv

我在尝试计算阈值(二进制)图像的每列总和时遇到了 OpenCV 问题。

这段代码

Mat thrs;
threshold(roi, thrs, 252, 255, THRESH_BINARY);
Mat dy;
reduce(thrs, dy, 1, CV_REDUCE_SUM);

给我一​​个运行时错误说明

OpenCV Error: Unsupported format or combination of formats

我假设这是由于二值图像是 CV_8UC1 格式,因此 dy 是相同的格式,不能保存求和值。它是否正确?解决方法是什么?

最佳答案

如果你没有指定最后一个参数dtype并且目标矩阵没有被初始化cv::reduce将假定 dtype 等于源矩阵的类型。在您的情况下,它将是 CV_8UC1。由于此格式无法存储求和值,因此您会遇到运行时错误。

所以为了避免这个错误你需要指定dtype参数。例如:

reduce(thrs, dy, 1, CV_REDUCE_SUM, CV_32SC1);

关于c++ - Reduce 函数计算每列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36737978/

相关文章:

python - 操作数不能与形状(299,491)(299,491,3)一起广播。如何解决像素乘法?

c++ - 重载 istream 运算符>> c++

c++ - 链接 QtCreator && OpenCv

android - Opencv4Android 2.4.9 中的 facerecognizer.java 类

python-3.x - TypeError: 'NoneType'对象在opencv中不可迭代

python - 从 python 调用 opencv HoughCircles。错误 : (-5) Unrecognized method id

c++ - 多重虚继承歧义

c++ - 我可以期望这个调用是内联的吗?

c++ - 编译并运行CGAL Triangulation演示

c++ - 为什么不调用私有(private)成员的默认构造函数?