Я использую OpenCV 2.4.4 на компьютере с ОС Cent. Мой код в настоящее время загружает изображение с предупреждением: несоответствие типов данных компонента
вот код:
#include <cv.h>
#include <highgui.h>
#include "imglib.h"
int main( int argc, char** argv )
{
Mat image = imread( argv[1], CV_LOAD_IMAGE_ANYDEPTH);
imwrite("debugwriteout.jp2", image);
}
Я передаю имя файла .jp2 в градациях серого в args. Изображение имеет 14-битную глубину пикселей, но когда я распечатываю значения пикселей, я получаю значения свыше 20000, и мое изображение теперь полностью черный квадрат. Любой совет будет принят во внимание.
Дополнительная информация:
Когда я изменяю флаг imread на CV_LOAD_IMAGE_GRAYSCALE, он успешно преобразует изображение в 8-битную глубину пикселей и печатает полезный вывод, поэтому я могу сказать, что модуль jasper работает, по крайней мере, несколько корректно.
Любой совет будет принят во внимание,
Спасибо
SZman,
Я решил свою проблему.
Решением является позиция старшего бита.
В 16 битах для глубины 14 бит вместо xxxxxxxxxxxxxx00 вместо 00xxxxxxxxxxxxxx.
Если вы хотите правильное значение, вы должны указать 2 бита справа.
Пожалуйста, прочитайте изображение, используя эти флаги
Mat image = imread( argv[1], CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);