休止状態とスタンバイ

新しく使い始めたノートPC(XP)がバッテリ無しなので、終了オプションに休止状態を使ってみようとしたらメニューにない!
調べてみると、シフトを押しながらスタンバイ押せばいいらしい
ほえーほえーほーえ

参考:http://mulnet.net/hiberbtn/


しかし最近つらかった・・・
いやいまだに。

動画⇒静止画連番ファイル書き出しについて

QuickTime動画(.mov)をWindows上で静止画連番に書き出したくてフリーソフトを探していたところ,著名なTMPGEですんなり行けた.以下を参考に.
http://www.softnavi.com/tmpgenc.htm
http://aqua-movie.sakura.ne.jp/page092.shtml


また,初めは.movを読みこめなかったので,以下を参考に
http://www.ironhearts.com/diary/archives/000748.html
http://www.geocities.com/SiliconValley/4942/svcd.html


動画チェックとしてのQuickTimeはコマ送り出来るという理由で好きなんだが,Windowsユーザーとしては動画形式の互換がどうも面倒な時も….
今現在残る課題としては,


・圧縮⇔サイズ縮小
FAT32のファイル上限(4GB?)


特にFAT32は困っていて,HD画像みたいなでっかい素材をMacで取り込み⇒Windowsで編集みたいな時は普通はどうするんだろう.

画像処理 処理落ちするのは 俺の方

MSDSで探してたらこんなんあったお.3Dゲームの作り方とかもすごいソフトタッチで解説してる

http://msdn.microsoft.com/ja-jp/academic/cc998604.aspx

しかし,2値画像の輪郭線の決まった間隔毎に目印をつけたいんだが,何かいい方法あるでしょうかねえ….
0と1の境界線を探していけばいいのかなあ.線を追って行って,次の分岐点についたら三方探索,みたいな.経験が浅いと他で流用できそうなアルゴリズムもぱっと浮かばないから,中学受験した時の脳みそで考えるしかないorz


ところで,サマーウォーズははたして,おばあちゃんっ子の心も捉えるのだろうか?

そういえば今日はシンボルの公開初日.


メモ,以下の二つ.今年のICCV

Background Subtraction for Freely Moving Cameras
Yaser Sheikh, Omar Javed, Takeo Kanade

Realtime Background Subtraction from Dynamic Scenes
Li Cheng, Minglun Gong


メモその2,グラフカットwikipediaねえな,と思ってたけど
http://ja.wikipedia.org/wiki/カット_(グラフ理論)
カット_(グラフ理論)を見ればよかったのか.

GSLのVSへの導入・インストール

SIFTのサンプルコードを見つけてきたら、GSLライブラリを使っていたのでどーにゅー。簡単だったのに、難しかったお…


基本的には、以下を参考に。
http://gonzaburou.cocolog-nifty.com/blog/files/GSL/GSL_VC.pdf
平山先生、大変ありがとうございますm(u u)m
これを参考に、と、サクサク。



…が、コンパイルでつまずく。
LINKエラー。俺多いなーこれ。結局、拾ったSIFTプロジェクトの設定が古めだったぽい。リンカ>入力で

cvd.lib highguid.lib cvauxd.lib cxcored.lib libgsl_d.lib libgslcblas_d.lib

cv.lib highgui.lib cvaux.lib cxcore.lib gsl.lib

にしただけですんなり通る。gslのlib名がまだいまいちわからんのだが、まぁ通ったのでよしとしよう。たぶんあまり使わないし。


さーやっとSIFTのコード解読。既に疲れた…



追記
プロジェクト移した際忘れてたのがプリプロセッサの定義。必ずC/C++>プリプロセッサに GSL_DLL を追加すること。。

OpenCV基本プログラム

久々にOpenCVを使おうとすると毎回文法忘れてるのでまとめ.
読み込んだsample.jpgをグレースケールにして表示,保存.

#include <stdio.h>
#include <stdlib.h>

#pragma comment(lib,"cv.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"cvaux.lib")
#pragma comment(lib,"highgui.lib")
#include <highgui.h>

#define filename "sample.jpg"

int main(void)
{
	int x,y;
	uchar p[3],Gray;
	IplImage *src,*img;

	if((src=cvLoadImage(filename,CV_LOAD_IMAGE_COLOR))==0)
		return -1;
	if((img=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1))==0)
		return -1;

	for(y=0;y<src->height;y++){
		for(x=0;x<src->width;x++){
			p[0] = src->imageData[src->widthStep*y + x*3];		// B
			p[1] = src->imageData[src->widthStep*y + x*3 + 1];	// G
			p[2] = src->imageData[src->widthStep*y + x*3 + 2];	// R

			Gray = cvRound(0.114478*p[0] + 0.586611*p[1] + 0.298912*p[2]);	// 整数値に丸め
			img->imageData[img->widthStep*y + x] = Gray;
		}
	}

	cvNamedWindow("Image",CV_WINDOW_AUTOSIZE);
	cvShowImage("Image",img);
	cvWaitKey(0);

	cvDestroyWindow("Image");

	cvSaveImage("result.jpg",img);
	cvReleaseImage(&src);
	cvReleaseImage(&img);

	return 0;
}


ちなみにグレースケール変換は cvCvtColor (src, img, CV_BGR2GRAY) を使っても一瞬で出来る.参照↓
http://opencv.jp/opencv-1.0.0/document/opencvref_cv_filters.html

ところでアルゴリズムってなに?
目的から現状を引いたもの?

srcって & cvCaptureFromAVI() のコーデック?について

す,srcって,sourceのことかー!!!考えたこともなかった…
(い,idxは,indexのことか!)(iiiは…,何だっけ?)

なんか外人さんのあだ名の付け方みたいや.Elizabeth⇒Bethみたいな.TonyはAnthonyや.


しかし,今日は完全にOpenCVのaviファイルの読み込みに持ってかれたのでメモ.
“ビデオコーデック”に,またしても苦しめられた….

本日したかったのは,ビデオクリップからの静止画吐き出し.
取り敢えずcodeをめもめも↓

#include <stdio.h>
#include <highgui.h>

int main(void){
	CvCapture* capture = NULL;

	// 指定したaviファイルが見つからない場合
	if((capture = cvCaptureFromAVI("avifile.AVI")) == NULL){
		printf("指定のaviファイルが見つかりませんでした.\n");
		return -1;
	}
	
	IplImage *frameImage;
	char filename[32];
	int counter = 0;

	cvNamedWindow("Source Image", CV_WINDOW_AUTOSIZE);
	cvMoveWindow("Source Image", 50, 50);

	// 処理ループの開始
	for(;;){
		// aviファイルからフレーム画像を取り出す
		if(NULL == (frameImage = cvQueryFrame(capture))){
			break;
		}

		// 画像表示
		cvShowImage("Source Image",frameImage);

		// 連番つけて画像を保存
		sprintf(filename,"frame/img_%03d.jpg",counter++);
		cvSaveImage(filename,frameImage);
	}

	cvReleaseCapture(&capture);
	cvReleaseImage(&frameImage);
	cvDestroyWindow("Source Image");

	return 0;
}


一番悩んだのは capture = cvCaptureFromAVI("avifile.AVI") のとこで,何回やってもNULLが出てきたので色々と調べたところ,どうもコーデックのせい.(MMnameで見たらDivXじゃないか…今考えたら当り前じゃ.)
やっぱ無圧縮がよかろうと思い,変換しようと思ったんだが,freesoft嫌いが発動して最初はAfterEffectsで書き出し.2秒のQVGAが32MB….しかしこれでもOpenCVに嫌われて,次は違うページに書いてあったVFWとかゆうコーデックでチャレンジだ!と思ったら単にVideoForWindowsの略で脱力したりと.無知だと疲れる.まったく.

まぁ以上は蛇足で,結局


SUPER ©
http://www.erightsoft.com/SUPER.html


というフリーソフト(素晴らしい使いごこちのよさ)で無圧縮で試してみたところ,やっと成功しました.フリーソフト万歳や.
この時8MB.AEのファイルサイズは一体何だったんだ….こいつの書き出し実態の不透明さにはここ3年くらいかなり苦しめられてんなー.

ただ,wmvコーデックにして書き出しても再びNULLでした.SUPER ©を紹介していたサイトではwmvで書きだしちゃえば良いと書いてあったんだが….何のコーデックだったら読めるのか,今度確認する必要がありそう.

連番ファイルは右を参考に.http://questionbox.jp.msn.com/qa4213086.html



ところで今日WBSを見ていたら,

先ほどメジャーリーガーのマイアー選手と言いましたが,正しくはマウアー選手でした.失礼いたしました.

と言ってたのを聞いて,あ,WBSって録画じゃなかったんだって思った.内容的には録画でいいよね.


ついでに番組の最後で今週の有識者
「自民と民主の景気対策はコインの表裏.自民の企業援助も,民主の家庭援助も同じことを言っている.問題はビジョンと財源」
と言っていたが,コインの表裏というよりダンゴ虫の表裏ではなかろうか.民主党マニフェストは耳触りが良すぎる.環境車補助金延長とか.今後下方修正しませんように.油は…出してね.


そして…,やーっぱり官僚のどたばた人事が悪しき風に報道されてる.たしかに悪しき….うーん.官僚人事はあまりに悪しきため,…って,誰も元ねたわからんよね

IplImage で配列作り

IplImage 型で配列の作り方のメモ.
たぶん正しく無さそうなんだが,通るのでこれで.OpenCVは老後に遊ぼ.

const int N = ×××;                 // フレーム枚数

IplImage **src = 0;
IplImage *src0 = cvLoadImage(〜);     // 適当に代表画像.

if( NULL == (src = (IplImage**)malloc(N*sizeof(src0))) ){
     printf("メモリ確保出来ず.\n");
     return -1;
}

〜

cvReleaseImage(src);
cvReleaseImage(src0);

あとはcvLoadImageとかでsrc[i]に画像を入れていく.
で,aviキャプチャからの流れをまとめると…,