AVI画像の画像処理

動画ファイル(AVI)の画像に対する画像処理の例です。Video for Windows(VFW)によりAVIファイルの読込みを行っているため、他のOSの移植等は全く考慮していません。画像を読み込んだ後、[再生]ボタンの横のメニューを選択すると再生中の画像に対して処理を行います。

メニューによる表示に変更し、VFWを利用しているため、コンパイルオプションが多少複雑になっています。一括ダウンロード中の makefile を参考にして下さい。

 ダウンロード

AVI画像の画像処理(aviip.cpp)
//-----------------------------------------------------------------
// 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;
}
inserted by FC2 system