
IplImage* changecolor(IplImage* img2)
{
unsigned char r, g, b, gray ;
for(int i=0; i<img2->height-1; i++){
for(int j=0; j<img2->width-1; j++){
Map2[i][j].r = img2->imageData[i*img2->widthStep + j*img2->nChannels + 2];
Map2[i][j].g = img2->imageData[i*img2->widthStep + j*img2->nChannels + 1];
Map2[i][j].b = img2->imageData[i*img2->widthStep + j*img2->nChannels + 0];
gray=255;
r = Map2[i][j].r;
g = Map2[i][j].g;
b = Map2[i][j].b;
// 빨강
if(r>=100 && g<=140 && b<=140 || r>=100 && b>=100 && g<=130
|| r<=240 && g<=150 && b<=90 && (b+60)<=g || r>=51 && g<=20 && b>=51){
gray=155;
img2->imageData[i*img2->widthStep + j*img2->nChannels + 0] = (char)gray; // Blue
img2->imageData[i*img2->widthStep + j*img2->nChannels + 1] = (char)gray; // Green
img2->imageData[i*img2->widthStep + j*img2->nChannels + 2] = (char)gray; // Red
}
if(r>=50 && g>=50 && b>=50){
gray=155;
img2->imageData[i*img2->widthStep + j*img2->nChannels + 0] = (char)gray; // Blue
img2->imageData[i*img2->widthStep + j*img2->nChannels + 1] = (char)gray; // Green
img2->imageData[i*img2->widthStep + j*img2->nChannels + 2] = (char)gray; // Red
}
if(gray==255){
CString qwq;
qwq.Format("%d %d %d",r,g,b);
AfxMessageBox(qwq);
}
}
}
return img2;
}
그냥 rgb값이 50이 넘는 것은 무조건 그레이 시킴...
ps. 미완성임 - 별로 참고 할건 못됨