ページ 11

OpenCV3.0 cv::VideoCaptureについて

Posted: 2015年10月25日(日) 19:55
by たが
環境は
OpenCV3.0.0
VisualC++ 2013
Windows8.1

動画ファイルを読み込みたいのですがisOpened関数で調べるとどうやら読み込めていないようです。
OpenCVの設定についてはNuGetを使ったので問題ないと思います。

ソースコード

コード:

 
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

int main(int argc, char* argv[])
{
	cv::VideoCapture cap("mp4_h264_aac.mp4");
	// ファイルがオープンできたかの確認
	if (!cap.isOpened()){ //ここで引っかかっているようです
		std::cout << " ... ";
		return 1;
	}

	cv::namedWindow("Capture", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
	while (1) {
		cv::Mat frame;
		cap >> frame;  // キャプチャ
		// 様々な処理
		// ...
		cv::imshow("Capture", frame);
		//
		if (cv::waitKey(30) >= 0) break;
	}
}
 


動画ファイルの置き場所は正しいと思います。(同じ場所に置いた画像ファイルは読み込めていたため)

バージョンの問題でしょうか?
参考にしたサイトはhttp://opencv.jp/cookbook/opencv_io.htmlです

よろしくお願いします。

Re: OpenCV3.0 cv::VideoCaptureについて

Posted: 2015年11月12日(木) 11:32
by peach
cv::VideoCapture::getでFOURCCが取得できているか確認してみてはいかがでしょうか?
取れていないようであれば、本当に読み込めてませんね。
読み取れている場合、単純にフレーム数が0とか一部情報が欠損して失敗しているとかあるんじゃないですかね

あとまあ、
OpenCVの設定についてはNuGetを使ったので問題ないと思います。
これが失敗している原因じゃないでしょうか?
NuGetの場合コンパイル時にどんなオプションが設定されているか私は知りませんが、おそらくFFMPEGが一緒にコンパイルされていないのでは?
一度自分でコンパイルしてみることをおすすめします。