Я нашёл решение.
cv::Mat использует порядок байт little-endian, а в памяти я храню их в big-endian. И если прочитать их с учётом этого, то всё будет правильно.
От этого, правда вопросов прибавилось, например:
1) почему раньше (при неправильном чтении) получалась почти правильная картинка ? Ведь если поменять местами два байта в каждом пикселе, то должно получиться изображение с белым шумом (если кому-то неочевидно, объясню почему)
2) Что за странное число 0x8500 ?
3) и самое главное : Как сменить порядок байт в cv::Mat ? (Прочитать-то изображение всё-таки надо) Ну или как быстро поменять чётные и нечётные байты в большом куске памяти (Это, скорее всего утопия)
Может ли кто-нибудь пролить ясность ?
Заранее спасибо.
0
|