我正在尝试使用以下方法从灰度 UIImage 和 Im 创建灰色 IplImage。
- (IplImage *)createGrayIplImageFromUIImage:(UIImage *)image {
CGImageRef imageRef = [image CGImage];
CFDataRef dat = CGDataProviderCopyData(CGImageGetDataProvider(imageRef));
const unsigned char *buffer = CFDataGetBytePtr(dat);
IplImage *iplimage = cvCreateImage(cvSize(image.size.width, image.size.height), IPL_DEPTH_8U, 1);
for (int i=0; i<image.size.width*image.size.height; i++) {
iplimage->imageData[i] = buffer[i];
NSLog(@"in creategrayiplimage - %d --- %d",buffer[i], iplimage->imageData[i]);
}
return iplimage;
}
当我在 for 循环中记录数据时,缓冲区具有正确的值 (0-255),但 iplimage->imageData 具有签名值,甚至其 IPL_DEPTH_8U。
例如
在 creategrayiplimage - 149 --- -107 在 creategrayiplimage - 247 --- -9 在 creategrayiplimage - 127 --- 127 在 creategrayiplimage - 128 --- -128
这似乎是一个小问题,但我被卡住了,我想知道为什么我会从 iplimage 得到负值。提前致谢