public static Int2[] FindBeads(FloatImg img, Int2 sampleCornerPos, int roi, float imgRelDist, float acceptance) { // public static extern IntPtr QTrkFindBeads(float* image, int w, int h, int smpCornerPosX, int smpCornerPosY, int roi, float imgRelDist, float acceptance); int beadCount; ImageData sampleImg = new ImageData(); ImageData imgData = img.ImageData; IntPtr beadListPtr = QTrkDLL.QTrkFindBeads(ref imgData, sampleCornerPos.x, sampleCornerPos.y, roi, imgRelDist, acceptance, out beadCount, ref sampleImg); Int2 * beadpos = (Int2 *)beadListPtr.ToPointer(); Int2[] r = new Int2[beadCount]; for (int i = 0; i < beadCount; i++) { r[i] = beadpos[i]; } QTrkDLL.QTrkFreeROIPositions(beadListPtr); return(r); }