質問: 0xff)) { //R //半径3の赤い円を描き、座標値を出力 cvCircle(rstimg, cvPoint(x, y), 3, CV_RGB(0xff, 0, 0)); printf("(%d,%d)=\n", x, y); } //ポインタを次の画素へ進める srcpt += srcimg->nChannels; rstpt += rstimg->nChannels; } } cvSaveImage(rstimgfname, rstimg); return 0; } } } ```
回答: > > 以下のエラーが消えません! > > cv::MAT h_image 式にはポインタ型が必要です > > > 質問文中には記載がありませんが、下記コード `h_image->width` で発生しているエラーでしょうか? ``` cvRectangle(srcimg, cvPoint(0, 0), cvPoint(h_image->width, srcimg->height), CV_RGB(0xff, 0xff, 0xff), CV_FILLED); ``` 変数`h_image`は`cv::Mat`クラス型ですから、エラーメッセージどおりポインタ型ではありません。「画像の幅」が必要であれば、`h_image.cols` または `h_image.size().width` と記述する必要があります。 題意とは無関係ですが、新旧OpenCVバージョンが混在したソースコードとなっているようです。特に `IplImage` 型は古いOpenCV 1.0時代の遺物のため推奨されません。基本的に `cv::Mat` の利用を検討してください(多くのOpenCV新機能は `IplImage` をサポートしません)