我是OpenCV的新手,我想学习如何正确使用reduce()函数。
OpenCVSharp中的功能描述:https://shimat.github.io/opencvsharp_docs/html/7bb05237-7ff6-0e19-bfeb-36ea352b3051.htm
我创建了一个自定义Mat对象,并在其上应用了Reduce函数。
int[,] mat2d = new int[,]
{
{ 0, 0, 0, 5, 10, 15, 15, 15, 15, 10, 5, 0, 0, 0 },
{ 0, 0, 0, 5, 10, 15, 15, 15, 15, 10, 5, 0, 0, 0 },
{ 0, 0, 0, 5, 10, 15, 15, 15, 15, 10, 5, 0, 0, 0 },
{ 0, 0, 0, 5, 10, 15, 15, 15, 15, 10, 5, 0, 0, 0 },
};
Mat testMat = new Mat(4, 14, MatType.CV_32S, mat2d);
Mat reducedMat = testMat.Reduce(ReduceDimension.Row,
ReduceTypes.Sum,
MatType.CV_32S);
我期望reduceMat将是一维数组,其中索引i的每个元素都包含testMat中第i行的总和。
不幸的是,我收到一个错误消息“ OpenCVException:输入和输出数组格式的不受支持的组合”。
我还尝试将ReduceDimension参数和dtype参数更改为每个可能的选项,但没有成功。
答案 0 :(得分:1)
答案是将int[,] mat2d
替换为byte[,] mat2d
。
事实证明int
不是有效的reduce类型。