Поздравления.
В C#: Если у меня есть интервал [] массив, объявленный как это
int[] array = new array[size];
существует способ получить IntPtr от этого массива?
Вещь состоит в том, что я использую платформу EmguCV, и существует конструктор для создания изображения, которое берет IntPtr к пиксельным данным для создания изображения из массива (интервал []).
Image<Gray,Int32> result = new Image<Gray,int>(bitmap.Width,bitmap.Height,stride,"**array.toPointer??**");
Между прочим, если кто-то мог, сказал мне, как вычислить шаг, который будет большим.
Вы должны быть в состоянии сделать это без небезопасного кода, используя GCHandle
. Вот пример:
GCHandle handle = GCHandle.Alloc(array, GCHandleType.Pinned);
try
{
IntPtr pointer = handle.AddrOfPinnedObject();
}
finally
{
if (handle.IsAllocated)
{
handle.Free();
}
}
Используйте небезопасный код, как здесь:
unsafe
{
fixed (int* pArray = array)
{
IntPtr intPtr = new IntPtr((void *) pArray);
}
}