Оба CvMat и IplImage обеспечивают tostring
методы, которые возвращают строку, представляющую исходные данные. Используя данные изображения, вы можете выяснить, как интерпретировать строковые данные как матрицу.
Вы должны использовать fromarray
, чтобы преобразовать строку данных обратно в объект изображения.
Чтобы преобразовать строку в массив, рассмотрите возможность использования модуля array
в Python. Например:
array.array('B', CvMat.tostring()) # 'B' is unsigned char, for rgb8 images
Чтобы получить 'шаг' между пикселями, используйте:
stride = CvMat.step/CvMat.cols
Тогда типичная индексация массивов, чтобы получить отдельные пиксели. Вероятно, вы захотите обернуть все это в класс, который скрывает всю неприятную сложность.
круто спасибо ... есть ли причина, стоящая за порядком [y, x]? Также, если я хочу сказать, умножьте каждый элемент на 0,5, как я могу это достичь? – Ferguzz
Несомненно. Матрица индексируется 'row, col', и каждый цветовой набор упорядочивается' (B, G, R) 'для цветных изображений. Я обновлю ответ, чтобы показать вам, как умножить один или несколько компонентов цвета на 0,5. – samplebias