EmguCV - создание изображения из неуправляемых данных - PullRequest
0 голосов
/ 09 мая 2011

Я использую EmguCV, и у меня есть матрица градаций серого байтового типа размером 640x480 и каждый элемент матрицы имеет размер 255 или 0. Теперь мне нужно сделать из этого изображение.Лучший конструктор, который я нашел, выглядел так:

Image<Gray,byte>(int width, int height, int stride, IntPtr scan0)

Я получил первый, второй и четвертый параметры из матрицы и отправил 640 за шаг.Но это дает мне

Access violation exception: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

Я буду признателен за любую помощь.

1 Ответ

1 голос
/ 10 мая 2011

Скорее всего, вы указали что-то не так в качестве указателя.Неправильный шаг может привести к искажению содержимого изображения.640 будет правильным значением в вашем случае (просто используйте ширину снова), поскольку шаг всегда представляет длину одной строки изображения в памяти (в вашем случае 640 байт).Я могу только догадываться, но не пытайтесь использовать указатель _ptr матрицы.Это может звучать логично, но это будет указывать на весь объект матрицы, а не только на данные (вы хотите).Не проверяя сейчас, я уверен, что вы можете использовать матрицу copyTo() для копирования содержимого в изображение (если этого достаточно для вашего варианта использования).

...