OpenCV
OpenCVを使っていて気づいたことを書いています。
間違い等がありましたら、ぜひ教えて下さい。m(__)m
グレー画像のLoad時の注意
グレー画像(pgm等)をLoadする時には
IPlImage *iplImage = cvLoadImage("ファイルの名前",0);
と0が必要。
色変換
色変換(cvCvtColor)における色空間は次の7種類
- RGB
- BGR
- Gray
- XYZ
- YCrCb
(Y = ()、Cr = ()、Cb =())
- HSV
(H = Hue(色相)、S = Saturation(彩度)、V = Value(明度))
- Lab
変換例は次のとおり。
IplImage *IplOrig;
IplOrig = cvLoadImage("-_-");
IplImage *IplHSV;
iplHSV = cvCreateImage(cvSize(iplOrig->width,iplOrig->height),IPL_DEPTH_8U,3);
cvCvtColor(iplOrig,iplHSV,CV_BGR2HSV);
CV_BGR2HSVのところは、CV_<変換前の色空間>2<変換後の色空間>とする。
(ちなみにcvLoadImageではBGRとなる)
色空間の分離
色空間の分離にはcvCvtPixToPlaneを用いる。
(iplHSVが24bitであるとする。)
IplImage *iplH = cvCreateImage(cvSize(iplHSV->width,iplHSV->height),IPL_DEPTH_8U,1);
IplImage *iplS = cvCreateImage(cvSize(iplHSV->width,iplHSV->height),IPL_DEPTH_8U,1);
IplImage *iplV = cvCreateImage(cvSize(iplHSV->width,iplHSV->height),IPL_DEPTH_8U,1);
cvCvtPixToPlane(iplHSV,iplH,iplS,iplV,0);