Первый метод использует метод Data
.
byte[] data = new byte[hCv.Width * hCv.Height];
Marshal.Copy(hCv.DataPointer, data, 0, hCv.Width * hCv.Height);
for(int i = 0; i < data.Length; i++)
{
// Print data[i]
}
Тип зависит от типа матрицы, если ее CV_8
, то используйте byte
, в случае CV_32
используйте float
и т. д.
В соответствии с this - другой метод заключается в создании изображения или матрицы (дополнительная копия) и последующем доступе к каждому элементу
Image<Bgr, Byte> img = hCv.ToImage<Bgr, Byte>();
Пиксельзатем к данным можно получить доступ, используя свойство Image<,>.Data
.
Вы также можете преобразовать Mat в объект Matrix <>.Предполагая, что мат содержит 8-битные данные
Matrix<Byte> matrix = new Matrix<Byte>(hCv.Rows, hCv.Cols, mat.NumberOfChannels);
hCv.CopyTo(matrix);
Доступ к данным пикселей можно получить с помощью свойства Matrix<>.Data
.