OpenCV:cvLoadImage将16位图像打开为8位

5

我正在尝试使用OpenCV 2.1处理16位单通道无压缩TIFF图像,但是当我调用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
在OpenCV中,使用Python加载TIF图像(例如16位),应该输入以下命令:
im = cv.LoadImageM("test.tif",cv.CV_LOAD_IMAGE_UNCHANGED)

+1 同样适用于其他OpenCV语言(已经使用C++测试)。 - Sam

1

我正在使用OpenCV 2.3.1版本,该版本允许打开像jpromvi制作的16位图像:

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

0

0

嗯......你可以编写自己的代码来加载图像。它是未压缩的TIFF格式,所以不应该有太大问题。


嗨Utkarsh!非常感谢你的回答。我只使用OpenCV工作了几个月。你能给我一些关于如何做到这一点的提示吗? - jpromvi
加载图像不是OpenCV的事情。您可以使用fopen和相关函数打开文件并加载图像像素。或者您可以尝试使用libtiff。 - Utkarsh Sinha

0

我遇到了类似的问题(在Linux上使用OpenCV 2.x和最新的libtiff)。我实际上正在使用12位tiff图像,这并不容易解决...

我可以推荐ImageMagic。

您可以验证您的图像是否真的是16位

显示myImage.tiff(右键单击,“图像信息”)

我将其转换为png-在我的情况下完美地工作

convert myImage.tiff myImage.png


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接