用opencv读取16位tiff

时间:2014-02-25 09:06:35

标签: c++ opencv

我正在尝试使用opencv 2.4.3读取16位彩色TIF。问题是我无法满足任何需求。我得到的只是一连串的黑线和灰线。

What I get, instead of a satellite image of Vancouver...

我尝试过不同的方式来阅读图片:

cv::Mat cvimage = cv::imread(imageFile, CV_LOAD_IMAGE_COLOR | CV_LOAD_IMAGE_ANYDEPTH);
cv::Mat cvimage = cv::imread(imageFile, CV_LOAD_IMAGE_UNCHANGED);

cv::imshow("image", cvimage);
正如预期的那样,

type cvimage是CV_16UC3

使用opencv读取16位图像的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

尝试:

cv::Mat cvimage = cv::imread(imageFile
                             , CV_LOAD_IMAGE_ANYCOLOR | CV_LOAD_IMAGE_ANYDEPTH);

如果这不起作用,您可以先将其转换为PNG,因为OpenCV可以正确读取甚至写入16位PNG文件。您可以将TIFF转换为PNG而不会丢失。

cv::Mat cvimage = cv::imread(imageFile, -1);