OpenCVとはオープンソースの画像処理用ライブラリです.
このページは入門者向けの内容になっています.
注) このページはOpenCV 1.0の内容です,注意してください.
以下の項目は別ページに.
OpenCV - 関数リファレンス
OpenCV - HighGUI
OpenCV - 数学演算
OpenCV - 2.x version 2.xについてはこちら
OpenCV for Android Android用はこちら
OpenCV 基礎
基本構造体
最低限覚えておくべき構造体.
IplImage
OpenCVの多くの関数が,構造体IplImageをその引数に取ります.
IplImageのメンバであるimageDataにピクセルの値が格納されており,その画像の幅と高さはそれぞれ,width,heightで表されます.また,widthStepは画像の水平方向1ライン分をバイト単位で表す値であり,これはimageDataのデータに直接アクセスする際に利用されます.
CvPoint
整数型座標系による2次元の点
typedef struct CvPoint { int x; /* x座標 */ int y; /* y座標 */ } CvPoint;
- コンストラクタ
inline CvPoint cvPoint(int x, int y);
CvSize
矩形のピクセル精度でのサイズ
typedef struct CvSize { int width; /* 矩形の横幅 */ int height: /* 矩形の高さ */ } CvSize;
- コンストラクタ
inline CvSize cvSize(int width, int height);
関数
メモリ確保・解放,画像入出力関数
cvCreateImage()
IplImage型のヘッダを生成し,メモリ領域を確保します.
IplImage* cvCreateImage(CvSize size, int depth, int channels); size 画像の幅と高さ. depth 画像要素のビットデプス.以下の内のいずれか. IPL_DEPTH_8U - 符号無し 8 ビット整数 IPL_DEPTH_8S - 符号有り 8 ビット整数 IPL_DEPTH_16U - 符号無し 16 ビット整数 IPL_DEPTH_16S - 符号有り 16 ビット整数 IPL_DEPTH_32S - 符号有り 32 ビット整数 IPL_DEPTH_32F - 単精度浮動小数点数 IPL_DEPTH_64F - 倍精度浮動小数点数 channels 要素(ピクセル)毎のチャンネル数.1, 2, 3, 4 のいずれか.
- 画像サイズ:2x4px,ビット深度:符号なし16bit整数,チャンネル数: 4(BGRA)の場合,
画像データは下図のようにimageDataに格納されます.
cvReleaseImage()
ヘッダと画像データを解放します.
void cvReleaseImage(IplImage** image); image 確保した画像ヘッダへのポインタのポインタ.
cvLoadImage()
ファイルから画像を読み込みます.
IplImage* cvLoadImage(const char* filename, int flags=CV_LOAD_IMAGE_COLOR); filename 読み込むファイル名. flags 画像がカラー/グレースケールのどちらかとdepthを指定する. 基本的にCV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLORを指定しておけば問題ない
cvSaveImage()
画像を保存します.
int cvSaveImage(const char* filename, const CvArr* image); filename ファイル名. image 保存する画像.
画像フォーマットは,filename の拡張子により決定されます.
この関数で保存できるのは,8ビット1チャンネル,あるいは8ビット3チャンネル('BGR' の順)画像だけです.
ピクセルデータへのアクセス
IplImageのメンバ変数であるchar* imageData(画像データへのポインタ)とint widthStep(画像データの横1行分のバイト幅)を用いて参照します.
ビット深度とチャンネル数
CV_32SC1などのマクロはビット深度とチャネル数を表しています.
- マクロ表記
CV_[ビット深度][U/S/F]C[チャネル数]
U → 符号なし(unsigned)
S → 符号あり(signed)
F → 浮動小数点
Hello World in OpenCV
- 画像 lena.jpg を読み込んで表示,result.png という別名で保存する
(ウィンドウの生成・破棄等はOpenCV - HighGUI参照)