C++ xcode";OpenCV 4.x+;需要启用的C++;11支持“;

C++ xcode";OpenCV 4.x+;需要启用的C++;11支持“;,c++,ios,xcode,opencv,c++11,C++,Ios,Xcode,Opencv,C++11,Probolem #import <opencv2/opencv.hpp> #import <opencv2/imgcodecs/ios.h> #import <opencv2/imgproc/imgproc_c.h> #import <opencv2/core/types_c.h> #import "OpenCVWrapper.h" @implementation OpenCVWrapper +(void) makeHistgramFromI

Probolem

#import <opencv2/opencv.hpp>
#import <opencv2/imgcodecs/ios.h>
#import <opencv2/imgproc/imgproc_c.h>
#import <opencv2/core/types_c.h>
#import "OpenCVWrapper.h"

@implementation OpenCVWrapper

+(void) makeHistgramFromImage:(UIImage *)image
{

 cv::Mat imageMat;
 UIImageToMat(image, imageMat);

 cv::Mat grayMat;
 cv::cvtColor (imageMat, grayMat, CV_BGR2GRAY);
 image = MatToUIImage(grayMat);

 IplImage *gray = [OpenCVManager createIplImageFromUIImage:image];

 float range[]={0,255};

 float* ranges[]={range};
 int histSize;
 histSize=256;
 CvHistogram* hist;

 hist=cvCreateHist(1,&histSize,CV_HIST_ARRAY,ranges,1);

 cvCalcHist(&gray,hist,0,NULL);

 cvReleaseImage(&gray);
}
+ (IplImage *)createIplImageFromUIImage:(UIImage *)uiImage
{
 CGImageRef imageRef = uiImage.CGImage;
 CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
 IplImage *iplimage = cvCreateImage(cvSize(uiImage.size.width, uiImage.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, uiImage.size.width, uiImage.size.height), imageRef);
 CGContextRelease(contextRef);
 CGColorSpaceRelease(colorSpace);

 IplImage *outputImage = cvCreateImage(cvGetSize(iplimage), IPL_DEPTH_8U, 3);
 cvCvtColor(iplimage, outputImage, CV_RGBA2BGR);

 cvReleaseImage(&iplimage);
 return outputImage;
}
@end
我目前正在开发一个应用程序,使用openCV for ios。现在的步骤是在iPhone11Pro上制作一个颜色直方图。swift不支持openCV,因此我正在包装openCV框架,以使其能够应用于ios。构建目标时,出现错误“OpenCV 4.x+需要启用的C++11支持”

发生错误的步骤如下所示

1.xcode不知何故无法识别IplImage→ 出现错误“应为a类型”

2.添加到文件openCVWrapper.h中→ 修正了前一个错误

3.构建项目后,出现错误“OpenCV 4.x+需要启用的C++11支持”

当前错误

"OpenCV 4.x+ requires enabled C++11 support" //The error i am working on roght now
"'array'file not found" //It seems like this error will be fixed once the upper error has been fixed
代码

"OpenCV 4.x+ requires enabled C++11 support" //The error i am working on roght now
"'array'file not found" //It seems like this error will be fixed once the upper error has been fixed
openCVWrapper.h

#ifndef OpenCVWrapper_h
#define OpenCVWrapper_h
#endif /* OpenCVWrapper_h */
#import <UIKit/UIKit.h>
#import <opencv2/core/types_c.h>  //added to fix the "expected type" 

@interface OpenCVManager : NSObject
+(void) makeHistgramFromImage:(UIImage*)image;
+ (IplImage *)createIplImageFromUIImage:(UIImage *)uiImage;
@end
#import"OpenCVWrapper.h"
opencv2.framework/Headers/core/cvdef.h行691-705

#ifndef CV_CXX11
# if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
#  define CV_CXX11 1
# endif
#else
# if CV_CXX11 == 0
#  undef CV_CXX11
# endif
#endif
#ifndef CV_CXX11
# error "OpenCV 4.x+ requires enabled C++11 support" //where the error is occuring
#endif
我所做的

生成设置→ 基本的→ 水平

将C++语言方言改为C++ 11

将C++标准库改为LBC+ +(LVVM C++标准库,C++ 11支持)< /P> 现在我正在将openCV4.x实现到xcode,但是根据类似的问题,它说我应该使用openCV3.x(因为C++11只在版本4.x中可用)。因此,我曾经在我的项目中实现过openCV3.x,但是框架中发生了另一个错误,这似乎是一个更难解决的问题,因此我决定使用openCV4.x并在stackoverflow中提出这个问题

虽然我知道我所要做的就是在我的xcode中启用C++11,但是首先我该如何以及如何消除这个错误?还是前一个错误“预期类型”指向IplImage

我在stackflow中搜索了许多网页,许多类似的问题,但从未找到适合自己的最佳解决方案,现在已经与这个错误斗争了3天多。。。。。。 请注意,正如你们所看到的,我不会很好地使用计算机,所以若你们有任何解决方案,我将非常高兴你们以非常认真的方式告诉我

我正在使用的版本

代码11.4
openCV 4.2.1版

您使用的是过时的C语言,它已从openCV 4中删除。使用C++ API代替!e、 g:IplImage->Mat,非常感谢!似乎Mat类型也可以用作IplImage,因为它已被删除!