我在OSX Mavericks 64bit上使用OpenCV 2.4.7。
我使用mac ports
安装了OpenCV'sudo port install opencv'。
我将搜索路径标题和库(分别)指向
的/ opt /本地/包括
的/ opt /本地/ lib中
在Build阶段:我已将以下内容添加到`Link Binary with Libraries'部分:
libopencv_imgproc.2.4.7.dylib
libopencv_core.2.4.7.dylib
在Xcode 5中构建没有问题。
我遇到了OpenCV的resize函数问题。我测试了dst图像与src图像具有相同宽度和高度的场景。所以基本上尺寸没有改变,返回的图像也符合预期......
图片@ http://answers.opencv.org/upfiles/1386739803184039.png
然而,当我将图像的宽度加倍时,像素列会移位(如隔行扫描/重影效果)...
图片@ http://answers.opencv.org/upfiles/13867399843639077.png
我的Objective-C功能如下:
- (NSMutableArray*) resizeWithPixelData: (NSMutableArray*) pixelData withWidth: (int) width withHeight: (int) height withFactor: (float) resizeFactor withDirection: (NSString*) resizeDirection {
cv::Mat image(height,width,CV_8UC1); //height, width ... no colours.
//NSLog(@" %i %i",image.cols,image.rows);
for (int i = 0; i < image.rows; i++) {
for (int j = 0; j < image.cols; j++) {
cv::Vec3b &intensity = image.at<cv::Vec3b>(i, j);
for(int k = 0; k < image.channels(); k++) {
//uchar col = intensity.val[k];
uint8_t value = [[pixelData objectAtIndex:i*width + j] intValue];;
intensity.val[k] = (uchar) value;
}
}
}
cv::Mat newimage;
//NSLog(@"height %d width %d",height,resizeFactor*width);
if ([resizeDirection isEqualToString:@"x"]){
cv::resize(image, newimage, cv::Size((int)resizeFactor*width,(int)height),0,0,CV_INTER_CUBIC);
}
NSLog(@" resize width width %i height %i ",image.cols,image.rows);
NSLog(@" resize width width %i height %i ",newimage.cols,newimage.rows);
NSMutableArray* resizedPixelData = [[NSMutableArray alloc] init];
for (int i = 0; i < newimage.rows; i++) {
for (int j = 0; j < newimage.cols; j++) {
cv::Vec3b intensity = newimage.at<cv::Vec3b>(i, j);
for(int k = 0; k < newimage.channels(); k++) {
uchar col = intensity.val[k];
//NSLog(@" %i ",(uint8_t)col);
[resizedPixelData addObject:[NSNumber numberWithInt:(uint8_t)col]];
}
}
}
return resizedPixelData;
}
非常感谢,如果有人能指出解决这个问题的方法。
它是opencv的当前版本吗?
对调整大小功能的调用是否不正确?
与Xcode / OSX / Mavericks不兼容?
上述函数位于.mm文件中(即objective-C plus plus)。
干杯
学家