如何解决将NSImage转换为IplImage
| 我将我的图像(仅jpeg文件)从NSImage转换为IplImage时遇到两个问题。我的第一个问题是,转换后的图像的色彩强度与原始图像不同。转换后的图像在某种程度上比原始图像更无声。 我的第二个问题是,仅8/10图像将被完全转换,而2/10图像将仅转换图像的一部分。我的意思是仅图像的左上角将被转换。我希望你能理解我,我的英语不是最好的。 IplImage* convert(NSImage* bild){
//converting the NSImage into an IplImage
NSBitmapImageRep *bitmap2 = [NSBitmapImageRep imageRepWithData:[bild TIFFRepresentation]];
int depth = [bitmap2 bitsPerSample];
int channels = [bitmap2 samplesPerPixel];
int height = [bitmap2 size].height;
int width = [bitmap2 size].width;
IplImage *iplpic = cvCreateImage(cvSize( width,height),depth,channels);
cvSetimageData(iplpic,[bitmap2 bitmapData],[bitmap2 bytesPerRow]);
for (int i = 0; i < iplpic->imageSize; i += 3) {
uchar tempR,tempG,tempB;
tempR = iplpic->imageData[i];
tempG = iplpic->imageData[i+1];
tempB = iplpic->imageData[i+2];
iplpic->imageData[i+2] = tempR;
iplpic->imageData[i+1] =tempG;
iplpic->imageData[i] = tempB;
}
cvSaveImage(\"/Users/goette/out.jpg\",iplpic,0);
return iplpic;
}
解决方法
我解决了第二个问题。我更改了这样的代码:
NSBitmapImageRep *bitmap2 = [NSBitmapImageRep imageRepWithData:[bild TIFFRepresentation]];
NSImage* bild1 = [[NSImage alloc] initWithSize:NSMakeSize([bitmap2 pixelsWide],[bitmap2 pixelsHigh])];
int depth = [bitmap2 bitsPerSample];
int channels = [bitmap2 samplesPerPixel];
int height = [bild1 size].height;
int width = [bild1 size].width;
IplImage *iplpic = cvCreateImage(cvSize( width,height),depth,channels);
cvSetImageData(iplpic,[bitmap2 bitmapData],[bitmap2 bytesPerRow]);
但是我仍然有失去色彩强度的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。