【发布时间】:2017-11-23 16:42:50
【问题描述】:
在带有非商业许可证的 EmguCV 3.1.X(从 Nuget 安装)中,我有这个代码,我从 here 获得的并且运行良好:
public static dynamic GetValue(this UMat mat, int row, int col)
{
var value = CreateElement(mat.Depth);
Marshal.Copy(mat.ToMat(AccessType.Read).DataPointer + (row * mat.Cols + col) * mat.ElementSize, value, 0, 1);
return value[0];
}
我现在想切换到 EmguCV 3.3.X 的商业版本(从 Nuget 安装),因此不得不将此代码更改为:
public static dynamic GetValue(this UMat mat, int row, int col)
{
var value = CreateElement(mat.Depth);
Marshal.Copy(mat.GetMat(AccessType.Read).DataPointer + (row * mat.Cols + col) * mat.ElementSize, value, 0, 1);
return value[0];
}
没有明显的原因,这段代码毫无例外地挂起,也没有任何异常:
Marshal.Copy(mat.GetMat(AccessType.Read).DataPointer + (row * mat.Cols + col) * mat.ElementSize, value, 0, 1);
我做错了什么还是 EmguCV 中的错误?
【问题讨论】:
-
库已更改,因此您必须重建您的 c# 项目才能使用新的 dll。通常我只是删除 c# 项目的 bin 文件夹来强制构建所有代码。确保保存您手动放置在 bin 文件夹中的所有文件。当您更改 dll 时,编译器依赖项有时无法识别 dll 更改