从Iplimage到Mat的转换不保留深度信息

时间:2013-01-04 15:40:14

标签: c++ opencv

好的......我不知道我缺少什么,但opencv文档说你可以从IplImage构建一个Mat。我有一个IplImage,但在构建Mat之后,它会丢失深度信息。我需要先检查深度信息,然后再将其传递给calcHist函数。

cout<<"image depth:"<<image->depth<<endl;
cout<<"image size: "<<image->height<<" "<<image->width<<endl;

Mat src(image);
cout<<"src   depth:"<<src.depth()<<endl;
cout<<"src   size: "<<src.size().height<<" "<<src.size().width<<endl;

我的输出看起来像这样。请注意,深度信息为GONE:

image depth:8
image size: 257 109
src   depth:0
src   size: 257 109

1 个答案:

答案 0 :(得分:3)

基本上,它是正确的,因为CV_8U == 0。有关详细信息,请参阅here

  • IplImage结构中加载图片时,深度设置为IPL_DEPTH_8U,即8。
  • Mat结构中加载图片时,深度为CV_8U,即为0.

我为普通图像做了一个小测试:

Mat frame=imread(szImagefile,CV_LOAD_IMAGE_GRAYSCALE);
cout<<"image depth:"<<frame.depth()<<endl;

结果:

image depth:0