ios--OpenCV--基於模板圖片的標記識別

來源:互聯網
上載者:User

 

如下:

 

 

 

#import UIImage+OpenCV.h#import MyViewController.h#import #import #import #import #import // Aperture value to use for the Canny edge detectionconst int kCannyAperture = 7;@interface MyViewController ()- (void)processFrame;@end@implementation MyViewController@synthesize imageView = _imageView;@synthesize imageView1 = _imageView1;- (void)viewDidLoad{    [super viewDidLoad];        //[self TakeColorFromImageHSV];    UIImage *mImage =  [UIImage imageNamed:@防偽標籤007.jpg];    IplImage *srcIpl = [self convertToIplImage:mImage];    IplImage *dscIpl = cvCreateImage(cvGetSize(srcIpl), srcIpl->depth, 1);    [self SkinDetect:srcIpl withParam:dscIpl];    IplImage *dscIplNew = cvCreateImage(cvGetSize(srcIpl),  IPL_DEPTH_8U, 3);    cvCvtColor(dscIpl, dscIplNew, CV_GRAY2BGR);    self.imageView.image = mImage;            UIImage *mImage1 =  [UIImage imageNamed:@temple005.jpg];    self.imageView1.image = mImage1;    IplImage *srcIpl1 = [self convertToIplImage:mImage1];    IplImage *dscIpl1 = cvCreateImage(cvGetSize(srcIpl1), srcIpl1 ->depth, 1);    [self SkinDetect:srcIpl1 withParam:dscIpl1];    IplImage *dscIplNew1 = cvCreateImage(cvGetSize(srcIpl1), IPL_DEPTH_8U, 3);    cvCvtColor(dscIpl1, dscIplNew1, CV_GRAY2BGR);        IplImage *src = srcIpl;    IplImage *srcResult = srcIpl;  //用來顯示    IplImage *templat = srcIpl1;    IplImage *result;    int srcW, srcH, templatW, templatH, resultH, resultW;    srcW = src->width;    srcH = src->height;    templatW = templat->width;    templatH = templat->height;    resultW = srcW - templatW + 1;    resultH = srcH - templatH + 1;    result = cvCreateImage(cvSize(resultW, resultH), 32, 1);    cvMatchTemplate(src, templat, result, CV_TM_SQDIFF);    double minValue, maxValue;    CvPoint minLoc, maxLoc;    cvMinMaxLoc(result, &minValue, &maxValue, &minLoc, &maxLoc);    cvRectangle(srcResult, minLoc, cvPoint(minLoc.x + templatW, minLoc.y+ templatH), cvScalar(0,0,255));       self.imageView1.image = [self convertToUIImage:srcResult];    }/// UIImage類型轉換為IPlImage類型-(IplImage*)convertToIplImage:(UIImage*)image{    CGImageRef imageRef = image.CGImage;    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();    IplImage *iplImage = cvCreateImage(cvSize(image.size.width, image.size.height), IPL_DEPTH_8U, 4);    CGContextRef contextRef = CGBitmapContextCreate(iplImage->imageData, iplImage->width, iplImage->height, iplImage->depth, iplImage->widthStep, colorSpace, kCGImageAlphaPremultipliedLast|kCGBitmapByteOrderDefault);    CGContextDrawImage(contextRef, CGRectMake(0, 0, image.size.width, image.size.height), imageRef);    CGContextRelease(contextRef);    CGColorSpaceRelease(colorSpace);    IplImage *ret = cvCreateImage(cvGetSize(iplImage), IPL_DEPTH_8U, 3);    cvCvtColor(iplImage, ret, CV_RGB2BGR);    cvReleaseImage(&iplImage);    return ret;}/// IplImage類型轉換為UIImage類型-(UIImage*)convertToUIImage:(IplImage*)image{    cvCvtColor(image, image, CV_BGR2RGB);    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();    NSData *data = [NSData dataWithBytes:image->imageData length:image->imageSize];    CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)data);    CGImageRef imageRef = CGImageCreate(image->width, image->height, image->depth, image->depth * image->nChannels, image->widthStep, colorSpace, kCGImageAlphaNone | kCGBitmapByteOrderDefault, provider, NULL, false, kCGRenderingIntentDefault);    UIImage *ret = [UIImage imageWithCGImage:imageRef];    CGImageRelease(imageRef);    CGDataProviderRelease(provider);    CGColorSpaceRelease(colorSpace);    return ret;}- (void)viewDidUnload{    [super viewDidUnload];    self.imageView = nil;    self.imageView1=nil;        delete _videoCapture;    _videoCapture = nil;}@end


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.