Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 矩阵<;t深度>;还有EmguCV的Mat? 为什么EmguCV中的Mat不够 为什么不能从文件本身加载图像_C#_Opencv_Emgucv - Fatal编程技术网

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 < /Cord>包装器(C++等价物没有这样的特性)。我认为在大多数情况下,如果您想充分利用OpenCV本身,那么
Mat
就足够了。通常,直接访问单个像素有点反模式(您错过了所有优化的OpenCV功能)。
Matrix<byte> img = Matrix<byte>.FromFile(path);