从 Iplimage 转换为 Mat 不会保留深度信息



好的。。。我不知道我缺少了什么,但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

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

  • 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

相关内容

  • 没有找到相关文章

最新更新