###前提・実現したいこと
VS2008でOpenCVを利用しています。
32bitで動作していましたが、大きなデータを取り扱った際、
2GB越えでメモリ不足となったため、64bitに作り替えようとしました。
dll,libをx64に差し替え、ビルドは通るのですが、実際の利用関数部で
x86版では正常に動作するのに、x64版では例外が発生してしまいます。
###発生している問題・エラーメッセージ
//検索実行 flann_index.radiusSearch(queries,indices,dists,radius,num,cv::flann::SearchParams(512));
で
catch( cv::Exception& e ){ return -1; //OpenCVの例外 }
ここにはいってしまう。
###該当のソースコード
最初に、Indexを作成しています。
//cvのflann_indexを作成する cv::Mat features= cv::Mat::zeros( pointNum,3,CV_32FC1); //インデックス用パラメータの作成 cv::flann::KDTreeIndexParams indexParams(4); //KD-TREE インデックス生成 MyIndex flann_index(features,indexParams,cvflann::EUCLIDEAN);
このあと、上記検索実行時に例外が発生します。
###試したこと
http://www.chino-js.com/ja/tech/opencv/flann-heap.html
という記事をみつけたので、対応してみましたが、状況は変わりませんでした。
上記ソースが「MyIndex」となっているのは、この対応をしているためです。
例外の内容を確認しました。メッセージは以下です。
..\..\..\src\opencv\modules\core\src\matrix.cpp:1466: error: (-215) mtype == type0 || (CV_MAT_CN(mtype) == CV_MAT_CN(type0) && ((1 << type0) & fixedDepthMask) != 0)
確かに該当ソースに該当マクロはあったのですが、なぜこれがというところがわからないため、追加調査します。
###補足情報(言語/FW/ツール等のバージョンなど)
利用しているOpenCVはVer2.4.5です。
他人のソースを引き継いだのですが、資料等がほぼないため、
OpenCVの各関数の使用意図などが理解できていない状態です。
ロジックを変更するつもりはなく、64bitで動作することだけが目標です。
(2017.5.30 15:49 追記)
開発環境兼実行マシンは、Windows7 SP1 x64 メモリ:16.0GB です。
よろしくお願いいたします。
あなたの回答
tips
プレビュー