Передача данных изображения / глубины из Unity C # во внешнюю C # dll - PullRequest
0 голосов
/ 13 февраля 2012

Я написал внешнюю C # dll, которая принимает изображение и выполняет обработку изображения для определения позы руки.В настоящее время я использую связывание ZigFu для получения данных Kinect.Теперь я хочу передать данные изображения / глубины из Kinect в мою C # dll.

Ниже приведены выдержки из кода:

C # в Unity

h1.detectHandPose(OpenNIContext.Instance.Depth.GetDepthMap().XRes,OpenNIContext.Instance.Depth.GetDepthMap().YRes);

где h1 является установкой моего класса C # dll

и кода на C # dll

public int detectHandPose(IntPtr srcptr,Int32 w,Int32 h)
{
   int fingerNum = 0;

   Bitmap srcbmp = new Bitmap(w, h, 2,System.Drawing.Imaging.PixelFormat.Format16bppGrayScale, srcptr);

   ccDefects(srcbmp);

   return fingerNum;
}

public Image<Bgr, Byte> ccDefects(Bitmap b)
{
   //all image processing code for convexity defects    
}

Однако я не могу запустить его и получить следующую ошибку:

ArgumentException: была найдена нулевая ссылка или недопустимое значение [GDI + status: InvalidParameter] System.Drawing.GDIPlus.CheckStatus (статус Status) System.Drawing.Bitmap..ctor (ширина Int32, высота Int32, шаг Int32, PixelFormatформат, IntPtr scan0) (обертка remoting-invoke-with-check)w, Int32 h) OpenNIDepthmapViewer.FixedUpdate () (в разделе Активы / OpenNI / Сценарии / OpenNIDepthmapViewer.cs: 152)

Любая помощь приветствуется.

Спасибо, Кумар

1 Ответ

0 голосов
/ 14 февраля 2012

Параметр шага в конструкторе Bitmap () неверен - шаг должен быть числом байтов, которое занимает строка в изображении (необходимо, так как некоторые форматы, такие как BMP, требуют, чтобы каждая строка пикселей начиналась с адреса, выровненного по DWORD, или некоторогодругие такие требования)

...