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