動画ファイル(AVI)の画像に対する画像処理の例です。Video for Windows(VFW)によりAVIファイルの読込みを行っているため、他のOSの移植等は全く考慮していません。画像を読み込んだ後、[再生]ボタンの横のメニューを選択すると再生中の画像に対して処理を行います。
メニューによる表示に変更し、VFWを利用しているため、コンパイルオプションが多少複雑になっています。一括ダウンロード中の makefile を参考にして下さい。
//----------------------------------------------------------------- // aviip.cpp: // AVI画像の画像処理 // Last Update: <2005/01/12 22:38:12 A.Murakami> //----------------------------------------------------------------- #include <stdio.h> #include <windows.h> #include "wingui.h" #include "ipcommon.h" //----------------------------------------------------------------- // 縮小/回転用 static int zsign = -1; static double zx=1.0,zy=1.0,deg=0.0; //----------------------------------------------------------------- void AviNormal(); void AviQuantize(); void AviScale(); //----------------------------------------------------------------- // メニューへの追加内容 //----------------------------------------------------------------- MenuInfo MI[] = { {"通常再生", AviNormal}, {"量子化(4)", AviQuantize}, {"拡大縮小 ",AviScale}, {NULL,NULL} }; //----------------------------------------------------------------- // 初期化関数 //----------------------------------------------------------------- void IP_init(){} //----------------------------------------------------------------- // AVIの通常再生 //----------------------------------------------------------------- void AviNormal(){} //----------------------------------------------------------------- // 量子化 //----------------------------------------------------------------- void AviQuantize() { c_quantize(lpBMP,4); } //----------------------------------------------------------------- // 縮小/回転 //----------------------------------------------------------------- void AviScale() { // 画像の回転・縮小 affine_transform(lpBMP,INTP_LN,zx,zy,deg); zx = zx + 0.02*zsign; zy = zy + 0.02*zsign; deg = deg + 2.5; if(zx < 0.5) zsign = 1; if(zx > 1.0) zsign = -1; if(deg > 360) deg = 0; } |