2009年6月13日土曜日

CSS

CSS勉強しなきゃなぁ・・・

2009年6月8日月曜日

東方アレンジCD

Liz Triangle「散花」
緋想天 Original Sound Track 全人類ノ天楽録
虎の穴にて購入

05メグルオトと他の曲の落差にびっくり。ってVoが違うのか。
Ficus glomerataのために買った。後悔してない。

2009年6月7日日曜日

OpenCV 画素へのアクセス

またまたOpenCVの記事。基本的な所はWeb上で参照できるようにしたい。
と言うことで画素へのアクセスについて。

基本読み込んだ画像がどんな形式であるかが、問題になってくる。
OpenCVでは8bit,16bit,32bit,(一応)64bitに対応している。
その対応によってIPL_DEPTH_XXXとなるわけです。
8U,8S,16Uやらです。
32はRGB,8は濃淡である。で64は一応アルファレンダリング(透明度)にまで対応してくる。
16は・・・医療画像とかかな?(医療画像はたいてい2bit/pixelで表示される。)
でこのOpenCV非常に多くのアルゴリズム、お手軽に実装できる表示機能などあるが、16bitにはほとんど対応していません。と言うわけでもし16bitを対象に処理するなら、16bitから8bitに変換し、処理した後8bitから16bitに変更しなければならない。

まぁ以上は前置きなわけですが、その後の画素へのアクセスの仕方をまとめておきたいと思います。

(x,y)の画素値を取得したい場合
IplImage *image = cvLoadImage("test.png");
unsigned char b = static_cast< unsiged char> (image->imageData[(y * image->widthStep + x)
* image->nChannel]);
unsigned char g = static_cast< unsiged char>(image->imageData[(y * image->widthStep + x +)
* image->nChannel + 1]);
unsigned char r = static_cast< unsiged char> (image->imageData[(y * image->widthStep + x)
* image->nChannel + 2]);


である。jpg画像なんで基本3チャンネルRGBを対象としている。リトルエンディアン方式なんで注意

7/3修正しました。

OpenCV

基本的な読み込みのサンプルコード

#include < iostream >

#include < cv.h >
#include < highgui.h >

using namespace std;

#pragma comment(lib, "cv.lib")
#pragma comment(lib, "highgui.lib")
#pragma comment(lib,"cxcore.lib")


int main()
{
//画像の読み込み
IplImage* src = 0;
src = cvLoadImage("./test.png",CV_LOAD_IMAGE_COLOR);

if(src == 0){
cout << "read error" << endl;
}
/* ウィンドウ生成 */
cvNamedWindow("src",CV_WINDOW_AUTOSIZE);
cvShowImage("src",src);

cvWaitKey(0);
/* 終了処理 */
cvDestroyWindow("src");
cvReleaseImage(&src);
return(0);
}

WindowsではcvRelaseImageを利用するためにcxcoreをリンクする必要がある?のかな?
リンクしなかったら参照ミス出るし・・・。

2009年6月6日土曜日

OpenCV

画像処理の勉強をしようと思いまして。WindowsにOpenCVを導入することにしました。
OpenCVとはインテルが提供している画像ライブラリのことです。
OpenCV
現在 1.1preがリリースされていますが、preとか怖いので1.0の方を使ってます。
binのパスを通して、libファイルとインクルードファイルのパスを通して。はい出来上がり。
とりあえず描画やらがお手軽なので勉強代わりに使ってみましょう。