gpt4 book ai didi

c# - Merge() 函数上的 Emgu CV 和 IInputArrayOfArrays

转载 作者:行者123 更新时间:2023-12-05 04:33:45 30 4
gpt4 key购买 nike

我很难理解什么是 IInputArrayOfArrays

当您查看 OpenCV 或 EmguCV 的文档时,您会感到有点困惑,大多数函数的函数参数都得到了 IInputArrayIOutputArray,但是通过一些搜索您可以得到要知道它基本上意味着垫子。

但在这种情况下,我认为 IInputArrayOfArrays 必须是 Mat 数组,但这不适用于 C#:

Mat[] channels = hsv.Split();
channels[1] = customMask;
CvInvoke.Merge(channels, hsv);

因为 无法从 Emgu.CV.Mat[] 转换为 Emgu.CV.IInputArrayOfArrays

由于 Split() 函数返回 Mat[],因此 Merge() 函数(这正是Split()) 的对面还需要一个 Mat[]...

最佳答案

注意不要混淆CvInvoke.Split()Mat.Split()

使用 Mat.Split() 将返回一个 Mat[]CvInvoke.Merge() 不接受。

相反,如果您使用 CvInvoke.Split(),它将返回一个 VectorOfVectorOfByte,与 CvInvoke.Merge() 的类型相同> 方法需要,使其与 CvInvoke.Split() 完全相反。

这是您的案例示例:

VectorOfVectorOfByte splitted = new VectorOfVectorOfByte();
CvInvoke.Split(channels, splitted);
// ... //
CvInvoke.Merge(splitted, channels);

关于c# - Merge() 函数上的 Emgu CV 和 IInputArrayOfArrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71340306/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com