1

好的......我不知道我错过了什么,但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;

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

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

1 回答 1

4

基本上,这是正确的,因为 CV_8U==0。有关更多详细信息,请参见此处

  • 当您在结构中加载图像时IplImage,深度设置IPL_DEPTH_8U为 8,即 8。
  • Mat结构中加载图像时,深度为CV_8U,即 0。

我对一张普通的图片做了一个小测试:

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

结果:

image depth:0
于 2013-01-04T16:03:35.400 回答