割りと軽いノリでOpenCV 3.0 に移行した結果、
あれこれハマった事や面倒だった事のメモ。
ビルドの問題に関しては、
cudaを使ってるのが主な原因の様な気がする。
contribでビルドできないmoduleが、いくつもある
gitでも3.00のアーカイブでも同様。
opencv-text や opencv-tracking は、試したかった機能なので残念。
cudaを使わなければビルドできてた様に覚えているし、
ビルドエラーは見れば直ぐに修正できそうな感じなので、
早晩対応されると思う。
pyton-bindingがビルドできない!
gitでも3.00のアーカイブでも同様。
OpenCV3のウリの一つだっただけに、これは本当に残念。
Windowsのpythonからは、今もOpenCV2を使ってる。
機械学習以外では困らないので、まぁ良いか。
CV_~の定数を、cv::~に置き換える
CV_~の定数は、まだ使えるみたいだけど
そろそろcv::~ のenumに書き換えた方が良いみたい。
CV_BGR2GRAY → cv::COLOR_BGR2GRAY とか
でも、どれが移行出来るのかとか、一覧できないので
順次、気がついたソースから修正中。
OpenCV 1.x 風マクロの置き換え
OpenCV1 APIからC++風APIに書き換えるのは、地味に面倒。
やっぱり、動いたり動かなかったりするので
ビルドしてみてエラーになった物から修正中。
とりあえず、VideoCapture や VideoWriter かな。
あと、画像処理のAPIのドキュメントが無かったりするので、
何となくエラーが出ないように場当たり的に修正している状況。
動いてはいるみたいだけど。
IplImage * と cv::Mat を暗黙で変換してくれなくなった
コンストラクタで暗黙変換しなくなったのが一番影響大きいかな。
そもそも、もう IplImage は使わない方が良いんだろうけど、
プロジェクト単位で見ると、地味に修正箇所が多い。
意を決っして全部修正する事にした。
どうしても IplImage を使いたいところは
1 2 3 |
IplImage * ipl; cv::Mat mat = cv::cvarrToMat(ipl) |
とかしてる。
CV_RGB から cv::Scalar に置き換え
RGBの順番が変わるので要注意。
色指定はCV_RGB が便利なんだけど、
中途半端はイヤなので、cv::Scalar に修正中。
揃えるのも大事。
Macはどうしよう…
HomeBrewのOpenCVでは
opencv3が廃止されてopencvに統合されたので
使い分けが面倒になった。
どのみち移行するので、OpenCV3にしてしまった。
これからハマるかも知れない。