Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode resize函数返回OSX Mavericks 64位opencv 2.4.7上移位的图像列_Xcode_Macos_Cocoa_Opencv_Osx Mavericks - Fatal编程技术网

Xcode resize函数返回OSX Mavericks 64位opencv 2.4.7上移位的图像列

Xcode resize函数返回OSX Mavericks 64位opencv 2.4.7上移位的图像列,xcode,macos,cocoa,opencv,osx-mavericks,Xcode,Macos,Cocoa,Opencv,Osx Mavericks,我在OSX Mavericks 64位上使用OpenCV 2.4.7 我使用mac端口安装了OpenCV “sudo端口安装opencv” 我将搜索路径头和库(分别)指向 /选择/本地/包括 /opt/local/lib 在构建阶段:我已将以下内容添加到“将二进制文件链接到库”部分: libopencv_imgproc.2.4.7.dylib libopencv_core.2.4.7.dylib 在Xcode 5中构建,没有问题 我遇到了OpenCV的调整大小功能的问题。我测试了一个场景,其中d

我在OSX Mavericks 64位上使用OpenCV 2.4.7

我使用mac端口安装了OpenCV

“sudo端口安装opencv”

我将搜索路径头和库(分别)指向

/选择/本地/包括

/opt/local/lib

在构建阶段:我已将以下内容添加到“将二进制文件链接到库”部分:

libopencv_imgproc.2.4.7.dylib

libopencv_core.2.4.7.dylib

在Xcode 5中构建,没有问题

我遇到了OpenCV的调整大小功能的问题。我测试了一个场景,其中dst图像与src图像具有相同的宽度和高度。因此,基本上尺寸没有改变,返回的图像与预期一样

Image@

但是,当我将图像的宽度增加一倍时,像素列会发生移动(如隔行扫描/重影效果)

Image@

我的目标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;
}
-(NSMutableArray*)使用pixelData调整大小:(NSMutableArray*)使用宽度的pixelData:(int)使用高度的宽度:(int)使用因子的高度:(float)使用方向的调整因子:(NSString*)调整方向{
cv::Mat图像(高度、宽度、cv_8UC1);//高度、宽度……无颜色。
//NSLog(@“%i%i”,image.cols,image.rows);
对于(int i=0;i
如果有人能指出解决此问题的方法,我们将不胜感激

它是opencv的当前版本吗

对resize函数的调用是否不正确

与Xcode/OSX/Mavericks不兼容

上述函数位于.mm文件中(即objective-C plus)

干杯


J.

我会转换成NSImage或CGImageRef并在那里处理它。。。缩放是复杂的。我改为使用3通道CV_8UC3而不是CV_8UC1。虽然我尝试坚持使用CV_8UC1并访问图像。但在使用uchar时,这不起作用。酷,你应该为你的问题写一个答案,以便人们可以从你的经验中受益。