早い話が、imageをBGRに分離し、cvThresholdの条件を満たす2値画像を見つけて
論理積を取るというもの。
cvSplit(image, imgB, imgG, imgR, NULL);
cvThreshold(imgR,imgTR,150,255,CV_THRESH_BINARY);
cvThreshold(imgG,imgTG,100,255,CV_THRESH_BINARY);
cvThreshold(imgB,imgTB,100,255,CV_THRESH_BINARY);
cvAnd(imgTR,imgTG,imgtemp,NULL);
cvAnd(imgtemp,imgTB,imgresult,NULL);
正直な所、RGBの各値を比較して全ての条件を満たすものを0として
2値画像保存した方が楽そうな気もしなくもないが。
for(int i = 0; i < image->width; i++) {
for(int j = 0; j < image->height; j++) {
if(150 <= R値 && R値 <= 255 &&
G値 <= 100 && B値 <= 100) {
cvSet2D(result,i,j,CV_RGB(255,255,255));
}
}
}
ってな感じで。
最終更新:2011年04月03日 18:52