[OpenCvによる画像処理入門 改定第3版]の沼にハマる-calcHist()編
【嵌った場所】
ページ:99ページ
サンプルコード:6.2.2 プログラム例:ヒストグラムを描画する
問題のコード行:11行目
Mat ing_hist;
img_hst=Mat::zeros(100,256,CV_8UVC1);
const int hdims[]={256);
const float hranges[]={0,256};
const float *ranges[]={ranges};
Mat hist;
calcHist(&img_src,1,0,Mat(),hist,1,hdims,ranges);
このコードで入力するとVisual Studio 2022ではcalcHistの部分でエラーを起こす。変数の数が足りない。
OpenCV 4.8.0のオフィサルサイトでの引数は以下の通り10個ある。
void cv::calcHist ( const Mat *images,
int nimages,
const int * channels,
InputArray mask,
OutputArray hist,
int dims,
const int * histSize,
const float ** ranges,
bool uniform = true,
bool accumulate = false
)
どうしようもないのでChatGTPに聞いてたところ上述のコードには1つの問題があるとのこと。
問題:calcHist()の3番めの仮引数
そもそも3番めの仮引数はchannelsなので、仮引数はinteger arrayへのポインタを使用すべきで”整数”を放り込むべきではない。
とのこと、、、、
Mat ing_hist;
img_hst=Mat::zeros(100,256,CV_8UVC1);
int channels[]={0};
const int hdims[]={256);
const float hranges[]={0,256};
const float *ranges[]={ranges};
Mat hist;
calcHist(&img_src,1,channels,Mat(),hist,1,hdims,ranges);
ここを修正したら問題なく起動できた。
書籍のサポートページを訪問したけど、正誤データには乗っていないため、一体どういうことなのか?
素人にはなかなか難しい問題である。
この記事が気に入ったらサポートをしてみませんか?