OpenCV: cvLoadImage открывает 16-битное изображение как 8-битное - PullRequest
5 голосов
/ 16 июля 2010

Я пытаюсь обработать 16-битные одноканальные несжатые изображения в формате TIFF с помощью OpenCV 2.1, но когда я вызываю cvLoadImage, по-видимому, они преобразуются в 8-битные:

IplImage* img = cvLoadImage("myImage.tif",
      CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);

std::cout << img->depth << std::endl;

печать

8

Изображения были получены с помощью флуоресцентного сканера, который генерирует только изображения такого типа, и я подтвердил с помощью коммерческого пакета программного обеспечения, что они действительно 16-битные.

Как я могу открыть эти изображения и работать с исходной битовой глубиной?

Ответы [ 5 ]

5 голосов
/ 20 марта 2012

В OpenCV Загрузка изображения tif (например, 16 бит) в python должна работать, набрав:

im = cv.LoadImageM("test.tif",cv.CV_LOAD_IMAGE_UNCHANGED)
1 голос
/ 09 ноября 2011

Я использую OpenCV 2.3.1, эта версия позволяет открывать 16-битные изображения, как сделал jpromvi:

IplImage* img = cvLoadImage("myImage.tif",
      CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
0 голосов
/ 11 сентября 2015

используйте GDAL lib, чтобы открыть 16-битное tiff-изображение, а затем преобразовать набор данных gdal в opencv Mat

, см .: https://github.com/marvins/Code_Sandbox/blob/master/c%2B%2B/opencv/geo_tools/gdalToOpenCV.cpp

0 голосов
/ 08 ноября 2010

У меня была похожая проблема (при использовании OpenCV 2.x в Linux с последней версией libtiff).На самом деле я использовал 12-битные изображения TIFF, что не облегчает ...

Я могу порекомендовать ImageMagic.

Вы можете убедиться, что ваше изображение действительно 16-битное

display myImage.tiff (правый клик, "Информация об изображении")

Я преобразовал его в png - который отлично работал в моем случае

convert myImage.tiff myImage.png

0 голосов
/ 21 июля 2010

Хмм ... вы можете написать свой собственный код для загрузки изображения. Это несжатый TIFF, поэтому не должно быть особых проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...