C# 矩阵<;t深度>;还有EmguCV的Mat? 为什么EmguCV中的Mat不够 为什么不能从文件本身加载图像
比如说,C# 矩阵<;t深度>;还有EmguCV的Mat? 为什么EmguCV中的Mat不够 为什么不能从文件本身加载图像,c#,opencv,emgucv,C#,Opencv,Emgucv,比如说, Mat img = new Mat(path); 是一个有效的操作。但是, Matrix<byte> img = new Matrix<byte>(path); 矩阵img=新矩阵(路径); 或者 Matrix img=Matrix.FromFile(路径); 不是有效的操作 根据来自数据库的信息,这两种类型的根本区别在于是否管理底层数据数组 Mat < /Cord>是C++类的包装器。通常,该类充当一个智能指针,管理为其拥有的数据数组分配的内存(尽
Mat img = new Mat(path);
是一个有效的操作。但是,
Matrix<byte> img = new Matrix<byte>(path);
矩阵img=新矩阵(路径);
或者
Matrix img=Matrix.FromFile(路径);
不是有效的操作 根据来自数据库的信息,这两种类型的根本区别在于是否管理底层数据数组
<代码> Mat < /Cord>是C++类的包装器。通常,该类充当一个智能指针,管理为其拥有的数据数组分配的内存(尽管它也能够进行观察——这一功能的一个很好的例子是能够为C#中的实例返回
Mat
头)。这意味着OpenCV能够根据需要(重新)分配内存。权衡是,在这种情况下,需要在C#中有效地访问底层数据
矩阵
类使用托管数组来保存数据。这意味着您可以轻松访问C#中的底层数据数组
老实说,告诉你为什么不能从图像文件加载Matrix
的最佳人选是作者。我的猜测是,它是用来表示图像以外的其他东西的。在技术上,这可以以与加载文件的能力相同的方式添加到Mat
就足够了。通常,直接访问单个像素有点反模式(您错过了所有优化的OpenCV功能)。
Matrix<byte> img = Matrix<byte>.FromFile(path);