gpt4 book ai didi

c++ - 将多波段 tiff 图像加载到 OpenCV C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:43:17 25 4
gpt4 key购买 nike

我尝试将一个 8 波段的 tiff 图像加载到 OpenCV C++ 中,但是当我检查图像的尺寸时,它给了我 3 个 1500 x 0 像素的波段。图像为 1500 x 1500 像素,有 8 个波段。有什么地方我出错了吗?我的代码如下:

int main(int argc, char** argv)
{
Mat Image, Normalized, ImageCopy;
if (argc != 2){
cout << "Define Image location" << endl;
}
else{
Image = imread(argv[1], CV_LOAD_IMAGE_UNCHANGED|CV_LOAD_IMAGE_ANYDEPTH);
}

cout <<" Number of bands \t: " << Image.channels() << "\t Image size\t"<< Image.size() << endl;

//Checking image validity
if(!Image.data){
cout << "Invalid image" <<endl;
return -1;
}

waitKey(0);
return 0;
}

最佳答案

我认为你运气不好,在 TiffDecoder::readHeader() 中有这个:

  m_type = CV_MAKETYPE(CV_8U, photometric > 1 ? 3 : 1);

也就是说,它使用 PHOTOMETRIC 标签将 channel 数设置为 1 或 3。为了使您的代码正常工作,您需要它根据 SAMPLESPERPIXEL 标记设置 channel 数,但事实并非如此。整个解码器似乎都假设图像是灰度或 RGB。即使是 RGBA 图像也会丢弃其 alpha channel 。

您可以直接使用 libtiff,使用 grfmt_tiff.cpp 中的 OpenCV 源作为指南。

关于c++ - 将多波段 tiff 图像加载到 OpenCV C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25392454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com