OpenCV && AKAZE && Windows10 && VisualStudio2017
動作するバージョンの組み合わせを求めて...
OpenCVでAKAZEで画像間の特徴点のマッチングをやろうと思ったら、案の定
OS(Windows10 64bit)と、OpenCVのバージョンと、Visual Studioのバージョンの組み合わせを見つけるのに一苦労した。opencv2413では、何の問題もなく、SHIFTやSURFのサンプロコードがビルドして動作するのに、AKAZEはすんなり動いてくれない。opencv3???でもソースからbuildしたり、色々opencvのバージョンを変えてもうまくいかない。detectAndComputeで落ちる。
そこで、opencv440のバイナリーでやってみたら、あっけなく動いた。しかも、opencv440の何が変わったかを読んでたら、SIFTの特許が切れた(2020年3月)ので、をインクルードしなくても良くなったということも後ればせながら知った。
Windows10(64bit)と、OpenCV 4.4.0とVisualSTudio2017でAKAZEのサンプルプログラムを動かすには以下のような手順になる。
opencv440をダウンロードし、Dドライブに解凍し、opencvをopencv440にリネームする。
VisualStudio2017の設定
VisualStudioのプロジェクトのプロパティから
構成プロパティ→VC++ディレクトリ→インクルードディレクトリ D:\opencv440\build\include
構成プロパティ→VC++ディレクトリ→ライブラリディレクトリ D:\opencv440\build\x64\vc14\lib
リンカ→入力→追加依存ファイル D:\opencv440\build\x64\vc14\lib\opencv_world440.lib
と設定しておく、また、
実行ファイルがbuildされるパス(x64\Release)に、D:\opencv440\build\x64\vc14\bin\opencv_world440.dllをコピーしておかないとbuild後「実行できない!」と怒られる。
サンプルプログラム実行
たとえば、https://docs.opencv.org/3.4/dc/d16/tutorial_akaze_tracking.html
など、一発ででbuild、実行できる。ここで、webカメラを繋いでおけば、画像ファイルを用意してなくても動作する。
テストの方法は、実行しwebカメラからの画像がウィンドウに出力されたら、スペースバーを押し、適当な範囲をマウスで決めてエンターキーを押すと、AKAZEとORBのマッチングを同時にリアルタイムで実行するデモが始まる。キーボードのcで終了。
おまけに、上のバージョンで、SIFTの特徴点をディテクトするテスト。
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/features2d.hpp>
//#include <opencv2/nonfree/features2d.hpp>
int main(int argc, const char* argv[])
{
const cv::Mat input = cv::imread(argv[1], 0);
cv::Ptr<cv::SIFT> detector = cv::SiftFeatureDetector::create();
std::vector<cv::KeyPoint> keypoints;
detector->detect(input, keypoints);
// Add results to image and save.
cv::Mat output;
cv::drawKeypoints(input, keypoints, output);
cv::imwrite("sift_result.jpg", output);
return 0;
}
この場合は、 <実行プログラム名> <画像名> で起動すると、sift_result.jpgに結果が
ストアされます。SIFTの特許の呪縛が解けたので、nonfreeのinclude をコメントアウトして実行できます。
Author And Source
この問題について(OpenCV && AKAZE && Windows10 && VisualStudio2017), 我々は、より多くの情報をここで見つけました https://qiita.com/quittardis/items/159e0e7d61f7611d4177著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .