gpt4 book ai didi

c# - EmguCV 中 Matrix 和 Mat 之间的根本区别是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 21:31:13 24 4
gpt4 key购买 nike

  • 为什么是Mat EmguCV 还不够吗?
  • 为什么不能Matrix<>从文件本身加载图像?

例如,

Mat img = new Mat(path);

是一个有效的操作。但是,

Matrix<byte> img = new Matrix<byte>(path);

或者,

Matrix<byte> img = Matrix<byte>.FromFile(path);

不是有效操作。

最佳答案

基于 Emgu Wiki 中的信息这两种类型的根本区别在于底层数据数组是否受管理。

Mat 是 C++ cv::Mat 的包装器类(class)。通常,此类充当智能指针,管理为其拥有的数据数组分配的内存(尽管它也能够观察——这种能力的一个很好的例子是返回 Mat 的能力C# 中 Matrix 实例的 header )。这意味着 OpenCV 能够根据需要(重新)分配内存。权衡是在这种情况下它是 more difficult在 C# 中有效地访问底层数据。

Matrix 类使用托管数组来保存数据。这意味着您可以在 C# 中轻松访问底层数据数组。

老实说,告诉您为什么无法从图像文件加载 Matrix 的最佳人选是作者。我的猜测是它旨在代表图像以外的其他事物。从技术上讲,这可以像加载图像文件的能力一样添加到 Mat 包装器中(C++ 等价物没有这样的功能)。

关于c# - EmguCV 中 Matrix<TDepth> 和 Mat 之间的根本区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53135007/

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