1. プロジェクトの作成
とりあえず、Consoleプロジェクトで行きましょう。
2. プロパティの設定
プロジェクトのプロパティを開き、
C/C++->Additional Include DirectoriesにOpenCVのインクルードフォルダを追加
Linker->Additional Library DirectoriesにOpenCVのライブラリフォルダを追加
Linker->Input->Additional Dependenciesに以下のファイル名を追加
opencv_core2410d.lib
opencv_highgui2410d.lib
opencv_objdetect2410d.lib
3. Source
#include <iostream>
#include <opencv2\opencv.hpp>
#include <opencv2\highgui\highgui.hpp>
int _tmain(int argc, _TCHAR* argv[])
{
// デフォルトのカメラをオープン
cv::VideoCapture cap(0);
if (!cap.isOpened())
{
std::cerr << "camera cannot open" << std::endl;
return -1;
}
// ウィンドウを作成
cv::namedWindow("cap", CV_WINDOW_AUTOSIZE);
while (1)
{
cv::Mat frame;
// カメラからフレームを取得
cap >> frame;
// ウィンドウに表示
if (frame.size().height != 0 || frame.size().width!=0)
{
cv::imshow("cap", frame);
}
// 30 ms 待つ。キー入力があれば終了
if (cv::waitKey(30) >= 0) break;
}
return 0;
}
ここで、悩んだところは、
if (frame.size().height != 0 || frame.size().width!=0)
この1文。
参考のサイトにはないのだが、調べてみると、最初のフレームではCapからはデータは転送されず画面のサイズが0×0でAbortがでていた。2フレーム目からはちゃんと取得できていたので、ちょっと改造したのがこの1文です。もっといい方法があってり、ミスがあったら教えてください。
http://docs.opencv.org/3.0-beta/modules/videoio/doc/reading_and_writing_video.html
http://qiita.com/vs4sh/items/4a9ce178f1b2fd26ea30
0 件のコメント:
コメントを投稿