了解Reduce()函数异常:输入和输出数组格式的不受支持的组合

时间:2019-02-18 08:42:47

标签: c# opencv opencvsharp

我是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参数更改为每个可能的选项,但没有成功。

1 个答案:

答案 0 :(得分:1)

答案是将int[,] mat2d替换为byte[,] mat2d

事实证明int不是有效的reduce类型。