質問: std::numeric_limits::quiet_NaN(); if (y < 0 || y >= img.rows || x < 0 || x >= img.cols) { cout << nan << endl; return nan; } else { cout << img.at(y, x); return img.at(y, x); } } ``` ### 質問 At関数の戻り値が、nanのfloatと輝度値のintで混在しているのをどう回避すればよいですか。 また、Matの参照渡しはこれであっていますか。 ### 補足情報(言語/FW/ツール等のバージョンなど) openCV3.0 VC2015
回答: こんにちは。 C++は静的な型付け言語ですから、同じ関数の戻り値の型をケースバイケースで変更することはできません。 (受け取り側で受け取る術がないです。) 現状は、float型のnanをintへ暗黙の型変換して返却しています。どんな値になるのか分かりませんが、int型にnanはありませんので意図通りに動作しないと思います。 また、`OpenCV Error: Assertion failed`の原因は別にあると思います。 受け取っているcv::Matはint型のグレイスケール画像で間違いないでしょうか?