1
얼굴의 피부를 채색해야합니다 ... 어떻게 피부색을 찾으십니까?ios 5의 소스 이미지에서 얼굴의 피부색을 어떻게 감지합니까?
는 이제 아직도 내가 색 특정 색상 범위에 의해 피부에 맞게 조정 일치하는 문제에 직면하고있다 ... RGB 화소 값으로 피부색을 얻기하지만 여전히 얼굴 일부 영역 색상의 내 범위에 해당하지 그때는 ...
내 문제에 대해 ... 그 지역은 또한 색깔, 얼굴 영역 이외의가 그 지역을 떨어질 수 있습니다 ..
어떤 생각을 그 지역 색상되지 않는다
미리 감사드립니다 ....
,451,515,MY 코드 :
-(void)colorImageBySliderValue:(float)value WithImage:(UIImage*)needToModified
{
CGContextRef ctx;
CGImageRef imageRef = needToModified.CGImage;
NSUInteger width = CGImageGetWidth(imageRef);
NSUInteger height = CGImageGetHeight(imageRef);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
unsigned char *rawData = malloc(self.sourceImage.image.size.height * self.sourceImage.image.size.width * 10);
NSUInteger bytesPerPixel = 4;
NSUInteger bytesPerRow = bytesPerPixel * self.sourceImage.image.size.width;
NSUInteger bitsPerComponent = 8;
CGContextRef context1 = CGBitmapContextCreate(rawData, self.sourceImage.image.size.width, self.sourceImage.image.size.height,
bitsPerComponent, bytesPerRow, colorSpace,
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);
CGContextDrawImage(context1, CGRectMake(0, 0, self.sourceImage.image.size.width, self.sourceImage.image.size.height), imageRef);
NSLog(@"%d::%d",width,height);
for(int ii = 0 ; ii < 768 * 1024 ; ii+=4)
{
int R = rawData[ii];
int G = rawData[ii+1];
int B = rawData[ii+2];
// NSLog(@"%d %d %d", R, G, B);
if(((R>60)&&(R<237)) || ((G>10)&&(G<120))||((B>4) && (B<120)))
// if(((R>100)&&(R<186)) || ((G>56)&&(G<130))||((B>30) && (B<120)))
// if(((R>188)&&(R<228)) || ((G>123)&&(G<163))||((B>85) && (B<125)))
// if(((R>95)&&(R<220)) || ((G>40)&&(G<210))||((B>20) && (B<170)))
{
rawData[ii+1]=R;//13;
rawData[ii+2]=G;//43;
rawData[ii+3]=value;//63
// NSLog(@"entered");
}
}
ctx = CGBitmapContextCreate(rawData,
CGImageGetWidth(imageRef),
CGImageGetHeight(imageRef),
8,
CGImageGetBytesPerRow(imageRef),
CGImageGetColorSpace(imageRef),
kCGImageAlphaPremultipliedLast);
imageRef = CGBitmapContextCreateImage(ctx);
UIImage* rawImage = [UIImage imageWithCGImage:imageRef];
UIImageView *ty=[[UIImageView alloc]initWithFrame:CGRectMake(100, 200, 400, 400)];
ty.image=rawImage;
[self.view addSubview:ty];
CGContextRelease(context1);
CGContextRelease(ctx);
free(rawData);
}
감사합니다,
SpyNet에