エラーハンドリング =========================== .. highlight:: cpp 以前のバージョンでは手動でスタックを巻き戻していましたが,それとは対照的に, OpenCV の新しいエラーハンドリング機構は例外を利用しています. ある条件をチェックして,それを満たしていない場合にエラーを発生させたいならば, CV\_Assert () または CV\_Error () を利用してください. .. code-block:: c CV_Assert(mymat.type() == CV_32FC1); ... if( scaleValue < 0 || scaleValue > 1000 ) CV_Error(CV_StsOutOfRange, "The scale value is out of range"); .. リリースビルド時には何のコードも生み出さない CV\_DbgAssert もあります. エラーを扱うには,標準的な例外ハンドリング機構を利用してください: .. code-block:: c try { ... } catch( cv::Exception& e ) { const char* err_msg = e.what(); ... } .. cv::Exception の代わりに, ``std::exception`` と書くこともできます.前者は後者からの派生だからです. 当然ですが,この機構を上手く働かせるために,そして,オブジェクトの破棄で悩まないように, ``IplImage*`` や ``CvMat*`` そして生ポインタ,を利用しないようにするべきです.通常は cv::Mat , ``std::vector<>`` , cv::Ptr などを利用するようにしましょう.