/// <summary> /// 初始化 /// </summary> /// <param name="width">图像宽</param> /// <param name="height">图像高</param> /// <returns></returns> public bool InitAlgorithm(Int32 width, Int32 height) { this.Width = 4000; this.Height = 3000; //初始化清晰度的算法 MvSSharpnessMeasureChannelParam smChannelParam = MvSSharpnessMeasureChannelParam.GetInstance(); smChannelParam.imgWidth = Width; smChannelParam.imgHeight = Height; int memSize = MVSHARP.sharpnessMeasureCalMemSize(ref smChannelParam); MvBarCodeGlobalVar.Log.InfoFormat("sharpnessMeasureCalMemSize :{0}", memSize.ToString()); m_handle = Marshal.AllocHGlobal(memSize); int result = MVSHARP.sharpnessMeasureInit(m_handle, ref smChannelParam); MvBarCodeGlobalVar.Log.InfoFormat("sharpnessMeasureInit return :{0}", result.ToString()); if (result > memSize) { MVSHARP.sharpnessMeasureExit(m_handle); //记下错误日志 //log.ErrorFormat("算法需要的内存{0}比最大支持的内存{1}大,此图片不进行清晰度", result, memSize); } return(true); }
public static MvSSharpnessMeasureChannelParam GetInstance() { MvSSharpnessMeasureChannelParam param = new MvSSharpnessMeasureChannelParam(); param.imgWidth = 0; param.imgHeight = 0; param.reserve = new IntPtr[MVConst.Len_30]; return(param); }
public static extern int sharpnessMeasureCalMemSize(ref MvSSharpnessMeasureChannelParam param);
public static extern int sharpnessMeasureInit(IntPtr handle, ref MvSSharpnessMeasureChannelParam param);