我在尝试计算阈值(二进制)图像的每列总和时遇到了 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/