首页 > 解决方案 > EmguCV 如何使用现有的垫子创建垫子?

问题描述

我是新手EmguCV,正在尝试做一个简单的任务;Mat使用现有的实例化 a 。这是代码片段:

Mat color = CvInoke.Imread("000.bmp"); //512x512 3 channel image
Mat color2 = new Mat(512, 512, Emgu.CV.CvEnum.DepthType.Cv8U, 3, color.Ptr, 512 * 3);
CvInvoke.Imshow("Color2", color2);
CvInvoke.WaitKey(0);

它显示损坏的图像。似乎 step 和 channel 参数不正确。我还尝试了具有相同结果的灰色图像(3 更改为 1)。

有什么建议我做错了吗?

标签: c#opencvemgucv

解决方案


根据EmguCV 文档,此命令不会将源复制Mat到目标Mat,它只会从现有数据创建 Mat 头,也不会分配矩阵数据。相反,它只是初始化指向指定数据的矩阵头,这意味着没有数据被复制。

如果你想Mat用旧日期创建一个新的,你可以使用这个:

Mat color2 = new Mat();        
color.CopyTo(color2);

推荐阅读