} //检测深度 internal StDetectParam GetSt() { StDetectParam stDetectParam = new StDetectParam { CameraNo = CameraNo, Left = Left, Right = Right, Up = Up, Down = Down, StartY = StartY, AlarmWidth = AlarmWidth, AlarmDepth = AlarmDepth }; return(stDetectParam); }
static IntPtr pResultBuff = Marshal.AllocHGlobal(size); //指向算法结果的内存指针 public static AlgorithmResult[] DetectImage(IntPtr imageHandle, StDetectParam detectParam) { //清零存放算法结果的内存区域 byte[] zeroBytes = new byte[size]; zeroBytes.Initialize(); Marshal.Copy(zeroBytes, 0, pResultBuff, size); DetectAlgorithm(imageHandle, detectParam, 1, pResultBuff); //用来存放算法返回的报警信息 AlgorithmResult[] newAlarmInfos = new AlgorithmResult[AlarmInfoCount]; for (int alarmInfoIndex = 0; alarmInfoIndex < AlarmInfoCount; alarmInfoIndex++) { //获取每一个报警信息 newAlarmInfos[alarmInfoIndex] = new AlgorithmResult(); IntPtr pAlarmInfo = new IntPtr(pResultBuff.ToInt64() + Marshal.SizeOf(typeof(AlgorithmResult)) * alarmInfoIndex); newAlarmInfos[alarmInfoIndex] = (AlgorithmResult)Marshal.PtrToStructure(pAlarmInfo, typeof(AlgorithmResult)); } return(newAlarmInfos); }
public static extern void DetectAlgorithm(IntPtr imageHandle, StDetectParam detectParam, int cameraNo, IntPtr alarmInfo);