質問: saturate_cast(hist.at(i)); cout << i << " " << v << endl; line(img_hst, Point(i,img_hst.rows), Point(i, img_hst.rows - img_hst.rows*(v / hist_max)), Scalar(255, 255, 255)); } //核以上 imshow(win_src, img_src);//入力画像を表示 imshow(win_dst, img_dst);//出力画像を表示 imwrite(file_dst, img_dst);//処理結果の保存 system("pause");//キー入力待ち return 0; } ``` でデバックすると、後ろから3行目 ``` imshow(win_dst, img_dst);//出力画像を表示 ``` でエラーが出ました。他のopenCVのプログラムではここはエラーが出なかったので、このプログラム特有のエラーと考え、今回は「出力画像」がないのにそれを表示させようとしたからエラーがでたと結論付けました。そこでここを削って再度デバックすると、コマンドプロントにエラー?がでました。 数字がバーッとならんで、最後に下のようなエラーです。 250 502 251 371 252 235 253 137 254 91 255 151 libpng warning: Image width is zero in IHDR libpng warning: Image height is zero in IHDR libpng error: Invalid IHDR data (続行するには何かキーを押して下さい) image width/heightとあるので出力画像のことかなと思いました。しかし先ほど削った「出力画像を表示」させるところはエラーが出るので、どうしたらよいのかわかりません。教えて頂けないでしょうか。 環境:VS community 2017 windows10(64) c++ プログラミング初心者なので、よければこういうエラーではこう検索すれば出てくるみたいなことがあれば、こちらもお願いします。
回答: こんにちは。 img_dstではなくimg_hstを指定するべきなのでは? 誤> imshow(win_dst, img_dst);//出力画像を表示 正> imshow(win_dst, img_hst);//出力画像を表示 同様に下記もミスしているような印象です。 誤> imwrite(file_dst, img_dst);//処理結果の保存 正> imwrite(file_dst, img_hst);//処理結果の保存