1

わかりました...何が欠けているのかわかりませんが、opencvのドキュメントには、IplImageからマットを作成できると書かれています。IplImageを持っていますが、マットを作成した後、深度情報が失われます。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_8U8に設定されます。
  • 構造体に画像をロードする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 に答える