2013-02-25 5 views
1

Я знаю, что это тот вопрос, который можно задать каждый день, но факт в том, что ответ может быть различным для каждого вопроса, и я еще не нашел его.Использование незаявленного идентификатора в ViewController

В настоящее время я являюсь настоящим новичком в Objective C, и я разрабатываю приложение с использованием рамки OpenCV.

Я слежу за этим website для обучения , а затем у меня возникла проблема.

Я скопировал/вставил 3 методы, которые даны на сайте, чтобы преобразовать резюме :: Mat в UIImage и UIImage в сорте :: Мат, но я не могу их использовать:

Мой * .PCH файл :

#import <Availability.h> 

#ifndef __IPHONE_5_0 
#warning "This project uses features only available in iOS SDK 5.0 and later." 
#endif 

#ifdef __cplusplus 
#import <opencv2/opencv.hpp> 
#endif 

#ifdef __OBJC__ 
#import <UIKit/UIKit.h> 
#import <Foundation/Foundation.h> 
#endif 

мой ViewController.hh файл

#import <UIKit/UIKit.h> 
@interface ViewController : UIViewController 

- (cv::Mat)cvMatFromUIImage:(UIImage *)image; 
- (cv::Mat)cvMatGrayFromUIImage:(UIImage *)image; 
- (UIImage *)UIImageFromCVMat:(cv::Mat)cvMat; 
@end 

и мой ViewController.mm файл

#import "ViewController.hh" 

@interface ViewController() 

@end 


@implementation ViewController 

- (cv::Mat)cvMatFromUIImage:(UIImage *)image 
{ 
    @@@//what is given in the linked website 
    return cvMat; 
} 

- (cv::Mat)cvMatGrayFromUIImage:(UIImage *)image 
{ 
    @@@//what is given in the linked website 
    return cvMat; 
} 

-(UIImage *)UIImageFromCVMat:(cv::Mat)cvMat 
{ 
    @@@//what is given in the linked website  
    return finalImage; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    NSString* filename = [[NSBundle mainBundle] pathForResource:@"openCV" ofType:@"jpg"]; 
    UIImage *image = [UIImage imageWithContentsOfFile:filename]; 

    cv::Mat inputMat = cvMatFromUIImage(image); 
    UIImage *newImage = UIImageFromCVMat(inputMat); 

    self.view.backgroundColor = [UIColor colorWithPatternImage:newImage]; 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"HelloWorld !" message:@"Welcome to OpenCV !" delegate:self cancelButtonTitle:@"Continue" otherButtonTitles:nil, nil]; 
    [alert show]; 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 

@end 

2 ошибки указаны на линиях, которые находятся в одном (void) viewDidLoad в файле .mm, в нем говорится, что оба cvMatFromUIImage и UIImageFromCVMat не объявлены.

Возможно, это был глупый вопрос, я думаю, что что-то пропустил, но не знаю, что.

Пожалуйста, помогите мне :)

ответ

2

Я думаю, что вы определили свои функции в Objective-C, но с использованием стандарта C для вызова их ... Изменить эти:

cvMatFromUIImage(image) 
UIImageFromCVMat(inputMat) 

в

[self cvMatFromUIImage:image]; 
[self UIImageFromCVMat:inputMat]; 
+0

Хорошо, спасибо, теперь получил отчёт, но шаг за шагом, все будет хорошо ^^ – Tiffado