So-net無料ブログ作成

PhotoSound:写真楽器システム [プログラミング]

ちょっと前に考えて研究テーマでやろうかと考えた案

写真に視覚以外のモダリティを付加したいと思い
写真を楽器のように演奏できたら面白いかなと思って出したもの

写真に写った被写体を解析して、それに合った音をだす
例えば、被写体に猫が写っててそれを触ったら「にゃ~」って奏でるとか

PhotoSoundのラフイメージ図
PhotoSound.jpg

iPad的なモノで実装したら、視覚的触覚?も凝れそうだし
複数人でやっても楽しいかと思ったけど
思ったより不評だし、開発環境とかにお金がかなりかかりそうなので断念


せっかく簡単なプロトタイプまで作っていたのが意味なくなるのが悲しいので
そのプロトタイプのプログラムの紹介をしてみようということです
言語C++ で 画像処理ライブラリのOpenCV pre1.1を利用

画像上のマウス位置からRGBを取得し、それを基に音(ビープ)変換プログラム

以下main関数内の処理------------------------------------------------------------------------------
// 楽器に見立てたい写真画像用
IplImage *mainImage;

// パスの格納
string fileName = "testImage.jpg";

// キー変数
int key = 0;

// BGR値格納用( OpenCVではRGBではなくBGRになっている )
uchar BGR[3];

// マウス値の格納用
POINT mousePoint;

// 画像の読み込み処理
if ((mainImage = cvLoadImage (fileName.c_str(), CV_LOAD_IMAGE_COLOR)) == 0){
cout << "画像読み込み失敗" << endl;
return -1;
}

// ウィンドウの名前
string windowNameMain = "main";

// ウィンドウの作成
cvNamedWindow( windowNameMain.c_str(), CV_WINDOW_AUTOSIZE);

// ループ処理 エスケープ(0x1b)が押されたらループ終了
while(key != ESCAPE){

// スクリーン上のマウス位置取得
GetCursorPos( &mousePoint);
// マウス位置の変換(スクリーン上 → ウィンドウ上)
ScreenToClient( (HWND)cvGetWindowHandle(windowNameMain.c_str()), &mousePoint);
     
//マウス位置の画像上BGR値の取得をし、ビープ音に変換処理
if(0 <= mousePoint.x && mousePoint.x <= mainImage->width
&& 0 <= mousePoint.y && mousePoint.y <= mainImage->height){
// マウス位置のBGR値を格納
BGR[0] = mainImage->imageData[mainImage->widthStep * mousePoint.y + mousePoint.x * 3]; //B値
BGR[1] = mainImage->imageData[mainImage->widthStep * mousePoint.y + mousePoint.x * 3 + 1]; //G値
BGR[2] = mainImage->imageData[mainImage->widthStep * mousePoint.y + mousePoint.x * 3 + 2]; //R値

//ビープ音を鳴らす(適当に定数をかけてます)
Beep((int)BGR[0] * 0.3 + (int)BGR[1] * 0.6 + (int)BGR[2] + 1, 100 + ((int)BGR[0] + (int)BGR[1] * 0.6 + (int)BGR[2] * 0.3 + 1) / 3);

}

//画像の表示
cvShowImage(windowNameMain.c_str(), mainImage);

//キー入力待ち
cvWaitKey(1);
}

// ウィンドウの解放
cvDestroyAllWindows();

// メモリの解放
cvReleaseImage( &mainImage);

return 0;
----------------------------------------------------------------------------------------------------------


結構単純
あれだね
ブログでプログラム書くと見にくい(笑)


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。