opencvでの動画保存に関して

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: opencvでの動画保存に関して

Re: opencvでの動画保存に関して

#4

by usao » 6ヶ月前

> VBGサイズ

おっと,typo(?)ですね.
正しくは「VGAサイズ」です.失礼しました.

Re: opencvでの動画保存に関して

#3

by ttb » 6ヶ月前

無圧縮にしてしています.
2GBの制限があるのは知りませんでした.
圧縮をして一度試してみたいと思います.

Re: opencvでの動画保存に関して

#2

by usao » 6ヶ月前

保存時に無圧縮にしていますか?
その場合,圧縮形式を変えると保存できたりしませんか?

もしそうであれば,
AVIには2GBの制限があるので,そのせいかもしれません.

VBGサイズ3chの画像はざっくり900KB
→秒間30フレームなら 1秒あたり27MB
→何秒で2GBになるかを電卓で計算 : 2048/27 ≒ 75.852 → 1分と15秒ちょい

で,おおよそ
> 1分17秒
に近い感じかな,と.
オフトピック
OpenCVで無圧縮AVI作ると,それをOpenCVで読めないとかいう,厄介な問題があった記憶

opencvでの動画保存に関して

#1

by ttb » 6ヶ月前

いつもお世話になっております.
開発環境 Windows10 Visual Studio 2013 for desktop opencv2.4.9 です.
現在カメラ映像(動画としてaviファイルに保存済み)から青色の物体を検出してその物体の輪郭線を描画したものを保存するというプログラムを作っています.しかしもともとの動画は1分40秒ほどあるのみ保存された動画は1分17秒までしか保存されていません.
自分では全く原因が分からないのでわかる方いらっしゃいましたらお教えください.

コード: 全て選択

#include<opencv2/opencv.hpp>
#include<opencv2/opencv_lib.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>

#include<iostream>
#include<stdio.h>
#include<vector>

using namespace cv;
using namespace std;

int main(void){
	Mat Frame, hsv, mask, fil,  output;

	VideoCapture cap("動画ファイル名.avi"); 
	VideoWriter writer("保存用.avi",-1,30, Size(640, 480), true);
	
	while (true){
		cap >> Frame;
		imshow("Frame",Frame);
		cvtColor(Frame, hsv, CV_RGB2HSV);
		imshow("hsv", hsv);

		inRange(hsv, Scalar(0, 150, 0), Scalar(180, 255, 255), mask);//青色取得
		imshow("mask", mask);
		
		vector<vector<Point> > contours; 
		findContours(mask, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
		output = Mat::zeros(mask.size(), CV_8UC3);

		Scalar color = Scalar(0, 255, 0);//輪郭線の色指定(B,G,R)
		drawContours(output, contours, -1, color, 2);

		imshow("output", output);
                writer << output;

		if (waitKey(1) == 27){
			break;
		}
	}
}

ページトップ