我知道这种情况每天都可以提出,但事实是每个问题的答案都不一样,我还没有找到答案。
我目前是Objective C的真正初学者,我正在使用框架OpenCV
开发一个应用程序。
我一直关注这个website进行学习 然后我遇到了问题。
我复制/粘贴了网站上给出的3种方法,将cv :: Mat转换为UIImage,将UIImage转换为cv :: Mat,但我不能使用它们:
我的* .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
这两个错误位于(void) viewDidLoad
文件.mm
单独的行中,它表示cvMatFromUIImage
和UIImageFromCVMat
都未声明。
这可能是一个愚蠢的问题,我想我错过了什么,但不知道是什么。
请帮帮我:)。
答案 0 :(得分:2)
我认为你已经在Objective-C中定义了你的函数,但是使用C标准来调用它们......改变这些:
cvMatFromUIImage(image)
UIImageFromCVMat(inputMat)
到
[self cvMatFromUIImage:image];
[self UIImageFromCVMat:inputMat];