Design Research Lab
開始行:
[[掲示板]]
3(5).avi、test.txtというファイルがプロジェクトのフォルダ...
ご注意ください(森田)。
---------------------------------------------------------
// 概要 : 直前のフレームとの差分をとる
//
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include "stdio.h"
#define WIDTH 720 // キャプチャ画像の横幅
#define HEIGHT 480 // キャプチャ画像の縦幅
#define _CRT_SECURE_NO_DEPRECATE 1
//画像ファイルの名前
//char* filename="1(yuki).avi";
char* filename="3(5).avi";
int main( int argc, char **argv ) {
int key; // キー入力用の変数
CvCapture *capture = NULL; // カメラキャプチャ用の構...
IplImage *frameImage; // キャプチャ画像用IplImage
int num; // 変化量格納変数
int x; // 画素探索用変数
int y; // 画素探索用変数
char buf[5]; // 数値から文字列への変換
//出力用テキストファイルの用意
FILE *fp; //出力ファイルポインタ
fp = fopen( "test.txt", "w" );
if( fp == NULL ){
puts( "ファイルのオープンに失敗" );
return 1;
}
// 画像を生成する
IplImage *backgroundImage = cvCreateImage( cvSize(WIDTH...
IplImage *grayImage = cvCreateImage( cvSize(WIDTH, HEIG...
IplImage *differenceImage = cvCreateImage( cvSize(WIDTH...
char windowNameCapture[] = "Capture"; // キャプチャ...
char windowNameDifference[] = "Difference"; // 背景差...
if(NULL==(capture = cvCaptureFromAVI(filename))){
fprintf(stderr,"指定のaviファイル...
return -1;
}
// ウィンドウを生成する
cvNamedWindow( windowNameCapture, CV_WINDOW_AUTOSIZE );
cvNamedWindow( windowNameDifference, CV_WINDOW_AUTOSIZE...
// 初期背景を設定するためにカメラから画像取得
frameImage = cvQueryFrame( capture );
// frameImageをグレースケール化し、背景画像とする
cvCvtColor( frameImage, backgroundImage, CV_BGR2GRAY );...
// メインループ
while ( 1 ) {
// captureの入力画像1フレームをframeImageに格納する
if (NULL==(frameImage = cvQueryFrame( capture ))){
fprintf(stderr,"指定のaviファイルが見つかりませんでし...
return -1;
}
// frameImageをグレースケール化したものを、grayImageに...
cvCvtColor( frameImage, grayImage, CV_BGR2GRAY );
// grayImageと背景画像との差分をとる
cvAbsDiff( grayImage, backgroundImage, differenceImag...
// differenceImageの画素を足し合わせる
num = 0;
for (x=0;x<WIDTH;x++){
for (y=0;y<HEIGHT;y++){
num = ((unsigned char*) (differenceImage->imageData ...
}
}
// 足し合わせた値をテキストファイルへ出力
sprintf(buf, "%d\n", num);
fprintf(fp,buf);
fprintf(stdout,buf);
cvCvtColor( frameImage, backgroundImage, CV_BGR2GRAY );
if ( differenceImage->origin == 0 ) {
// 左上が原点の場合
cvFlip( differenceImage, differenceImage, 0 );
}
// 画像を表示する
cvShowImage( windowNameCapture, grayImage );
cvShowImage( windowNameDifference, differenceImage );
// キー入力判定
key = cvWaitKey( 1 );
if ( key == 'q' ) {
// 'q'キーが押されたらループを抜ける
break;
} else if ( key == 'b' ) {
// 'b'キーが押されたら、その時点でのキャプチャ画像を...
frameImage = cvQueryFrame( capture );
//cvCvtColor( frameImage, backgroundImage, CV_BGR2...
}
}
// キャプチャを解放する
cvReleaseCapture( &capture );
// メモリを解放する
cvReleaseImage( &backgroundImage );
cvReleaseImage( &differenceImage );
// ウィンドウを破棄する
cvDestroyWindow( windowNameCapture );
cvDestroyWindow( windowNameDifference );
fclose( fp ); //ファイルを閉じる
return 0;
}
終了行:
[[掲示板]]
3(5).avi、test.txtというファイルがプロジェクトのフォルダ...
ご注意ください(森田)。
---------------------------------------------------------
// 概要 : 直前のフレームとの差分をとる
//
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include "stdio.h"
#define WIDTH 720 // キャプチャ画像の横幅
#define HEIGHT 480 // キャプチャ画像の縦幅
#define _CRT_SECURE_NO_DEPRECATE 1
//画像ファイルの名前
//char* filename="1(yuki).avi";
char* filename="3(5).avi";
int main( int argc, char **argv ) {
int key; // キー入力用の変数
CvCapture *capture = NULL; // カメラキャプチャ用の構...
IplImage *frameImage; // キャプチャ画像用IplImage
int num; // 変化量格納変数
int x; // 画素探索用変数
int y; // 画素探索用変数
char buf[5]; // 数値から文字列への変換
//出力用テキストファイルの用意
FILE *fp; //出力ファイルポインタ
fp = fopen( "test.txt", "w" );
if( fp == NULL ){
puts( "ファイルのオープンに失敗" );
return 1;
}
// 画像を生成する
IplImage *backgroundImage = cvCreateImage( cvSize(WIDTH...
IplImage *grayImage = cvCreateImage( cvSize(WIDTH, HEIG...
IplImage *differenceImage = cvCreateImage( cvSize(WIDTH...
char windowNameCapture[] = "Capture"; // キャプチャ...
char windowNameDifference[] = "Difference"; // 背景差...
if(NULL==(capture = cvCaptureFromAVI(filename))){
fprintf(stderr,"指定のaviファイル...
return -1;
}
// ウィンドウを生成する
cvNamedWindow( windowNameCapture, CV_WINDOW_AUTOSIZE );
cvNamedWindow( windowNameDifference, CV_WINDOW_AUTOSIZE...
// 初期背景を設定するためにカメラから画像取得
frameImage = cvQueryFrame( capture );
// frameImageをグレースケール化し、背景画像とする
cvCvtColor( frameImage, backgroundImage, CV_BGR2GRAY );...
// メインループ
while ( 1 ) {
// captureの入力画像1フレームをframeImageに格納する
if (NULL==(frameImage = cvQueryFrame( capture ))){
fprintf(stderr,"指定のaviファイルが見つかりませんでし...
return -1;
}
// frameImageをグレースケール化したものを、grayImageに...
cvCvtColor( frameImage, grayImage, CV_BGR2GRAY );
// grayImageと背景画像との差分をとる
cvAbsDiff( grayImage, backgroundImage, differenceImag...
// differenceImageの画素を足し合わせる
num = 0;
for (x=0;x<WIDTH;x++){
for (y=0;y<HEIGHT;y++){
num = ((unsigned char*) (differenceImage->imageData ...
}
}
// 足し合わせた値をテキストファイルへ出力
sprintf(buf, "%d\n", num);
fprintf(fp,buf);
fprintf(stdout,buf);
cvCvtColor( frameImage, backgroundImage, CV_BGR2GRAY );
if ( differenceImage->origin == 0 ) {
// 左上が原点の場合
cvFlip( differenceImage, differenceImage, 0 );
}
// 画像を表示する
cvShowImage( windowNameCapture, grayImage );
cvShowImage( windowNameDifference, differenceImage );
// キー入力判定
key = cvWaitKey( 1 );
if ( key == 'q' ) {
// 'q'キーが押されたらループを抜ける
break;
} else if ( key == 'b' ) {
// 'b'キーが押されたら、その時点でのキャプチャ画像を...
frameImage = cvQueryFrame( capture );
//cvCvtColor( frameImage, backgroundImage, CV_BGR2...
}
}
// キャプチャを解放する
cvReleaseCapture( &capture );
// メモリを解放する
cvReleaseImage( &backgroundImage );
cvReleaseImage( &differenceImage );
// ウィンドウを破棄する
cvDestroyWindow( windowNameCapture );
cvDestroyWindow( windowNameDifference );
fclose( fp ); //ファイルを閉じる
return 0;
}
ページ名: