Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
Iphone 基于openCv的图像比较_Iphone_Opencv - Fatal编程技术网

Iphone 基于openCv的图像比较

Iphone 基于openCv的图像比较,iphone,opencv,Iphone,Opencv,我正在使用OpenCV算法进行图像比较: 我的代码: -(void)opencvImageCompare{ NSMutableArray*valuesArray=[[NSMutableArray alloc]init] NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; IplImage *img = [self CreateIplImageFromUIImage:imageView.image]; // always ch

我正在使用OpenCV算法进行图像比较: 我的代码: -(void)opencvImageCompare{ NSMutableArray*valuesArray=[[NSMutableArray alloc]init]

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

IplImage *img = [self CreateIplImageFromUIImage:imageView.image];
// always check camera image
if(img == 0) {
    printf("Cannot load camera img");

}


for (int i=0; i<[appDelegate.weedArray count]; i++) {
    weedObject=[appDelegate.weedArray objectAtIndex:i];
    IplImage  *res; 
    CvPoint   minloc, maxloc;
    double    minval, maxval;
    double values;
    NSString *weedImage=[weedObject.image stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    UIImage *imageTocompare = [UIImage imageNamed:weedImage];
    IplImage *imageTocompareIpl = [self CreateIplImageFromUIImage:imageTocompare];
    // always check server image 
    if(imageTocompareIpl == 0) {
        printf("Cannot load serverIplImageArray image");
    }
    if(img->width-imageTocompareIpl->width<=0 && img->height-imageTocompareIpl->height<=0){
        int balWidth=imageTocompareIpl->width-img->width;
        int balHeight=imageTocompareIpl->height-img->height;
        img->width=img->width+balWidth+100;
        img->height=img->height+balHeight+100;
    }



    CvSize size = cvSize(
                         img->width  - imageTocompareIpl->width  + 1,
                         img->height - imageTocompareIpl->height + 1
                         );

    res = cvCreateImage(size, IPL_DEPTH_32F, 1);

    // CV_TM_SQDIFF CV_TM_SQDIFF_NORMED
    // CV_TM_CCORR  CV_TM_CCORR_NORMED
    // CV_TM_CCOEFF CV_TM_CCOEFF_NORMED

    cvMatchTemplate(img, imageTocompareIpl, res,CV_TM_CCOEFF);
    cvMinMaxLoc(res, &minval, &maxval, &minloc, &maxloc, 0);
    printf("\n value %f", maxval-minval);
    values=maxval-minval;
    NSString *valString=[NSString stringWithFormat:@"%f",values];
    [valuesArray addObject:valString];
    weedObject.values=[valString doubleValue];
    printf("\n------------------------------");

    cvReleaseImage(&imageTocompareIpl);

cvReleaseImage(&res);
}
cvReleaseImage(&img);
NSAutoreleasePool*pool=[[NSAutoreleasePool alloc]init];
IplImage*img=[self-CreateIplImageFromUIImage:imageView.image];
//始终检查相机图像
如果(img==0){
printf(“无法加载摄像头img”);
}
对于(int i=0;i宽度图像到比较IPL->宽度高度图像到比较IPL->高度宽度img->宽度;
int balHeight=imageTocompareIpl->height img->height;
img->width=img->width+balWidth+100;
img->height=img->height+balHeight+100;
}
CvSize size=CvSize(
img->width-imagestocompareipl->width+1,
img->height-imagestocompareipl->height+1
);
res=cvCreateImage(大小,IPL_深度_32F,1);
//CV_TM_SQDIFF CV_TM_SQDIFF_标准化
//CV_TM_CCORR CV_TM_CCORR_标准
//CV_TM_Cceeff CV_TM_Cceeff_标准
cvMatchTemplate(img、imageTocompareIpl、res、CV_TM_cFoff);
cvMinMaxLoc(res,&minval,&maxval,&minloc,&maxloc,0);
printf(“\n值%f”,maxval-minval);
值=maxval-minval;
NSString*valString=[NSString stringWithFormat:@“%f”,值];
[valuesArray addObject:valString];
值=[valString doubleValue];
printf(“\n-----------------------------”);
cvReleaseImage(&ImageToComparePL);
cvReleaseImage&res;
}
cvReleaseImage(&img);
}
但是我没有得到准确的结果,当我选择相同的图像进行比较时,它的值不是0,而是其他一些值。请帮助我解决这个问题。

您试图比较哪种图像?为什么要计算
maxval
minval
之间的差异?结果不应该是
minval
您正在寻找?模板与图像中某个区域之间的最小距离?这些图像是不同的杂草图像。我正在比较杂草图像。通常情况下,您应该只关心模板匹配的最小值。通常情况下,除非您使用的是完全相同的图像中的一个部分,否则距离不会为0。谢谢我一直在寻找精确的值。你想比较什么类型的图像?为什么你要计算
maxval
minval
之间的差异?你不应该寻找
minval
吗?模板和图像中某个区域之间的最小距离?这些图像与我不同比较图像。通常情况下,您应该只关心模板匹配的最小值。通常,除非您使用的是完全相同的图像中的一个部分,否则距离不会为0。谢谢,我得到了我要查找的精确值。