Mat
在EmguCV中不够用? Matrix<>
无法从文件本身加载图像? 例如,
Mat img = new Mat(path);
是有效的操作。但是
Matrix<byte> img = new Matrix<byte>(path);
或
Matrix<byte> img = Matrix<byte>.FromFile(path);
无效的操作。
答案 0 :(得分:2)
根据Emgu Wiki的信息,两种类型之间的根本区别在于是否对基础数据数组进行管理。
Mat
是C ++ cv::Mat
类的包装。通常,此类充当智能指针,用于管理为其拥有的数据数组分配的内存(尽管它也能够观察到-这种功能的一个很好的例子是能够返回Mat
标头C#中的Matrix
实例)。这意味着OpenCV能够根据需要(重新)分配内存。折衷是在这种情况下,more difficult是在C#中有效访问基础数据的方法。
Matrix
类使用托管数组来保存数据。这意味着您可以轻松地使用C#访问底层数据数组。
老实说,最能告诉您为什么无法从图像文件加载Matrix
的人是作者。我的猜测是它打算代表图像以外的其他事物。从技术上讲,可以像向Mat
包装器提供加载图像文件的功能一样添加此功能(C ++等效项没有这种功能)。