2012-11-04 85 views
4

每當我嘗試在iOS中使用OpenCV Stitcher類時,我都會包含stitcher頭(#include),最終會出現編譯錯誤「Expected'{'」in exposure_compensate.hpp 。顯然這行 enum {NO,GAIN,GAIN_BLOCKS}; 正在導致某種錯誤。當在iOS下使用Stitcher時出現OpenCV編譯器錯誤

我對openCV很新,但使用其他函數,如filter2d()按預期工作。我該如何解決這個問題?

+0

怎麼ü解決這個問題請 – HDNZ

回答

2

我這些的OpenCV之前導入任何蘋果頭解決了這個問題,因爲在頭開頭提到:

#if defined(NO) 
# warning Detected Apple 'NO' macro definition, it can cause build conflicts. Please, include this header before any Apple headers. 
#endif 

希望有所幫助。

+0

您的意思是進口的蘋果頭後'opencv'頭?它是在任何Apple頭文件之前包含這個頭文件,並且我嘗試了'#import '然後'#import '並且它工作。 –

0

我也遇到了這個問題。 G.Führ確保您首先包含opencv頭文件。最簡單的方法是添加:

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

靠近應用程序「Appname-Prefix.pch」標題的頂部。這是一個預編譯頭文件,很容易保證你的opencv頭文件將包含在任何蘋果頭文件之前。

// 
// Prefix header 
// 
// The contents of this file are implicitly included at the beginning of every source file. 
// 

#import <Availability.h> 

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

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

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

這意味着你不會不小心包括這個其他任何地方的應用程序之前,蘋果頭。

3

嘗試

#import <opencv2/opencv.hpp> 

然後

#import <UIKit/UIKit.h> 
+0

經過幾個小時的調試,這節省了我。 –

2

在你的項目中,創建一個前綴頭,MyProject.pch,並將其設置在項目的構建設置。

然後是PCH文件中,做這樣的事情:

#ifdef __cplusplus 
# include <opencv2/opencv.hpp> 
# include <opencv2/stitching/detail/blenders.hpp> 
# include <opencv2/stitching/detail/exposure_compensate.hpp> 
#else 
# import <Foundation/Foundation.h> 
# import <UIKit/UIKit.h> 
# import <Availability.h> 
#endif