c# - 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)。
有什么建议我做错了吗?
解决方案
根据EmguCV 文档,此命令不会将源复制Mat
到目标Mat
,它只会从现有数据创建 Mat 头,也不会分配矩阵数据。相反,它只是初始化指向指定数据的矩阵头,这意味着没有数据被复制。
如果你想Mat
用旧日期创建一个新的,你可以使用这个:
Mat color2 = new Mat();
color.CopyTo(color2);
推荐阅读
- linux - Running a command on Linux/Docker Cluster
- android - How to use proguard in Appcelerator?
- powerapps - PowerApp 未将值正确映射到 Azure DevOps 集成
- php - 我怎样才能让strtotime进入一天的开始
- java - Java 中的包装类和泛型说明
- mysql - MySQL 触发器使用不同的 TIMEZONE
- c# - 格式json响应asp.net core 2.1
- c# - 为什么 Nuget 不从 packages.config 恢复包?
- python - 匹配两个列表的内容,其中包含一个句子
- sql - 需要在 PIVOT 条件下获得一对多