每当我尝试在iOS中使用OpenCV Stitcher类并且我包含stitcher-header(#include)时,我最终会在exposure_compensate.hpp中出现编译错误“Expected'{'”。显然是这条线 枚举{NO,GAIN,GAIN_BLOCKS}; 导致某种错误。
我是openCV的新手,但使用filter2d()等其他函数按预期工作。我该如何解决这个问题?
答案 0 :(得分:11)
尝试
#import <opencv2/opencv.hpp>
然后
#import <UIKit/UIKit.h>
答案 1 :(得分:4)
在您的项目中,创建一个Prefix Header,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
答案 2 :(得分:2)
我通过在OpenCV之前导入任何Apple标头解决了这个问题,如标题开头所述:
#if defined(NO)
# warning Detected Apple 'NO' macro definition, it can cause build conflicts. Please, include this header before any Apple headers.
#endif
希望有所帮助。
答案 3 :(得分:1)
我也遇到了这个问题。正如G.Führ所确保您首先包含opencv标头。最简单的方法是添加:
#ifdef __cplusplus
#include <opencv2/opencv.hpp>
#endif
靠近应用程序“Appname-Prefix.pch”标题的顶部。这是一个预编译的头文件,可以很容易地保证在任何apple标头之前包含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
这意味着您不会在应用程序的任何其他位置之前意外包含苹果标题。
答案 4 :(得分:0)