opencvカメラとビデオ操作の2つの方法

 

Opencv操作カメラプログレスバーでビデオを再生ビデオを保存

独創性に焦点を当てる:http://blog.csdn.net/hgz_gs/article/details/50733143

/

#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <math.h>
# include <ctype.h>
#include <limits.h>
#include <float.h>
#include <opencv2 / opencv.hpp>
using namespace std;
using namespace cv;
int function1(void)
{ std :: string videoFile = " tree.avi "; //ビデオ名を再生するVideoCapturecap; //ビデオハンドルを作成するcap.open(videoFile); //ビデオを開くif(!cap.isOpened())//開くかどうかを判断する{ fprintf(stderr、" cap flash \ n "); //エラーリターン-1で終了; }マットフレーム;// Mat --IplImage--cvMat while(cap.read(frame))//画像を読む










{ imshow( "function1-tree"、frame); //表示imshowにはウィンドウの作成が含まれますcharc = cvWaitKey(33); //キーボード入力を取得し、ビデオ再生速度も制御しますif(c == 27)// ESC Exit break; } destroyAllWindows(); //すべてのウィンドウを破棄--- destroyWindow()特定のウィンドウを破棄return 0; } int function2(void){ cvNamedWindow( "function2-tree"); //ウィンドウを作成するcvNamedWindow( "function2-tree"、0);ウィンドウのサイズを変更できますCvCapture * Capture = cvCreateFileCapture( "tree.avi"); //ビデオファイルを開くIplImage * frame = NULL; while(1){ frame = cvQueryFrame(キャプチャ); //ファイルから画像のフレームを取得if(!frame)break; cvShowImage( "function2-tree"、frame); //画像を表示charc = cvWaitKey(33); if(c == 27) ブレーク;}
























cvReleaseCapture(&capture);
cvDestroyWindow( "function2-tree");
return 0;
}


int g_slider_position = 0;
CvCapture * g_capture = NULL;
void onTrackbarSlide(int pos)//スクロールバーをもう一度ドラッグすると、スクロールの位置バーは変更れますint番号として渡されます
{  
cvSetCaptureProperty(
g_capture、
CV_CAP_PROP_POS_FRAMES、 
pos 
);
}


int function3(void)//プログレスバー付き
{ cvNamedWindow( "function3-tree"、CV_WINDOW_AUTOSIZE); //できるウィンドウに適用しますサイズを自動的に調整しますExample1g_capture = cvCreateFileCapture( "tree.avi"); // avi形式のムービーを読み取るintframes =(int)cvGetCaptureProperty(g_capture、CV_CAP_PROP_FRAME_COUNT); if(frames!= 0){ cvCreateTrackbar(// Progress bar "ポジション"、







"function3-tree"、
&g_slider_position、
frames、onTrackbarSlide);
}
IplImage * frame = NULL;
while(1)
{ frame = cvQueryFrame(g_capture); //次のムービーのフレームレートを読み取るif(!frame)break; cvShowImage( " function3-tree "、frame); char c = cvWaitKey(33); //ビデオクリップが読み取られるたびに、33ミリ秒間停止し、キーボード入力を収集しますif(c == 27)break; // 27対応するキーボードのESC、キーボードが押されていない場合、Cは-1 } cvReleaseCapture(&g_capture); cvDestroyWindow( "function3-tree"); return 0; } int function4(void)// VideoCaptureカメラをオンにする{ //カメラを自動的にオンにします。PCの外部カメラがわかっている場合は、-1をカメラのデバイス番号に変更できます。VideoCapturecap(-1); // linuxは/ devディレクトリ(通常は0、armは通常3 で表示できます。 

















    if(!cap.isOpened())  
    {  
        printf( "cap.isOpened is error \ n");
        return -1;  
    } 
// set()はカメラのいくつかのパラメーターを設定でき、get()はカメラ構成の
    上限を取得します。 set(CV_CAP_PROP_FPS、30); //フレームレート
    cap.set(CV_CAP_PROP_FRAME_WIDTH、280); //ワイド
    cap.set(CV_CAP_PROP_FRAME_HEIGHT、40); //ハイ
マットフレーム;  
//ビデオのフォーマットを設定するために使用保存済み;またはfourcc = FOURCC(* 'xvid')を

使用//保存されたビデオ名のフォーマット、フレームレート、解像度を設定するために使用
// CvVideoWriter * out = VideoWriter( 'output.avi'、VideoWriter_fourcc(* 'XVID' )、20、cvSize(
640,480 )); while(cap.read(frame))//画像のフレームを読み取る
{ // out-> write(frame); // imshow( "function1-tree"、frameの保存を開始する); //表示imshowウィンドウの作成が含まれていますcharc = cvWaitKey(33); //キーボード入力を取得しますが、ビデオの再生速度も制御します



if(c == 27)// ESC exit
break;
}
destroyAllWindows(); //すべてのウィンドウを破棄--- destroyWindow()特定のウィンドウを破棄
return 0;
}




int function5(void)// CvCapture
{ CvCapture * capture = cvCaptureFromCAM(-1); //カメラをランダムに開く    // CvCapture * caption = cvCreateFileCaptur( "555.mp4");ビデオを開くIplImage * frame = NULL; int n; frame = cvQueryFrame(capture); // Get oneファイルからフレーム画像CvVideoWriter * video = cvCreateVideoWriter( "camera.avi"、CV_FOURCC( 'X'、 'V'、 'I'、 'D')、25、cvSize(frame-> width、frame-> height) ); while(1){ frame = cvQueryFrame(capture); //ファイルから画像のフレームを取得if(!frame)break; n = cvWriteFrame(video、frame); cvShowImage( "ddd "、frame); //画像を表示













char c = cvWaitKey(33);
if(c == 27) 
break;
}
cvReleaseCapture(&capture);
cvDestroyWindow( "ddd");
return 0;
}


int g_Pos = 0; //スクロールの現在の位置を調整するために使用bar //
開いたビデオファイルをグローバル変数として使用
CvCapture * g_Capture = NULL;
//スクロールバーをドラッグすると、この関数がコールバックされます
//同時に、現在のスクロールバーの位置が渡されます32ビット形式で
voidCallBackTrackBarSlide(int pos)
{ //ビデオファイルの現在再生中のフレームをリセットしますcvSetCaptureProperty(g_Capture、CV_CAP_PROP_POS_FRAMES、pos); g_Pos = pos; } int function6(void){ //作成しますDemo04と呼ばれる形式cvNamedWindow( "Demo04"、CV_WINDOW_AUTOSIZE); //パラメーターに従って指定されたビデオファイルを開きますg_Capture = cvCreateFileCapture( "tree.avi"); //フレームの総数を取得します











int totalFrames =(int)cvGetCaptureProperty(g_Capture、CV_CAP_PROP_FRAME_COUNT);
if(totalFrames!= 0)
{ //スクロールバーを作成します。ここでは、スクロールバーをドラッグした後のコールバック関数を指定しますcvCreateTrackbar( "TrackBar"、 "Demo04"、&g_Pos 、totalFrames、CallBackTrackBarSlide); } IplImage * frame; //ループの順序ですべてのフレームをトラバースしますwhile(1){ //現在のフレームの次のフレームを取得しますframe = cvQueryFrame(g_Capture); if(!frame){ break; } cvShowImage( "Demo04"、frame); char chKeyCode = cvWaitKey(30); if(chKeyCode == 27){ break; } g_Pos ++; //スクロールバーは、2フレームが再生された場合にのみトリガーされます。(g_Pos%1 == 0){
























cvSetTrackbarPos( "TrackBar"、 "Demo04"、g_Pos);
}
}
cvReleaseCapture(&g_Capture);
cvDestroyWindow( "Demo03");
return 0;
}
int main(int argc、const char ** argv)
{ // function1(); //ビデオ1を開く// function2(); //ビデオ2を開く// function3(); //早送りと早戻しのビデオ3を使用// function4(); //カメラ1を開くfunction5(); //開くカメラ2 // function6(); //プログレスバー4のビデオreturn0 ; }







 

Windowsでテストする場合、aviビデオはexeファイルと同じフォルダーにある必要があります

Linuxで生成された実行可能ファイル内

 

 

 

vsソースパッケージのダウンロード http://download.csdn.net/detail/hgz_gs/9443858

 

 

おすすめ

転載: blog.csdn.net/hgz_gs/article/details/50733143