Xcode 转换为&;来自OpenCV::Mat,NSImage
有一篇文章描述了如何做到这一点,这篇文章似乎对其他人有用,但它不适合我 以下是使用的.h文件的副本:Xcode 转换为&;来自OpenCV::Mat,NSImage,xcode,cocoa,opencv,Xcode,Cocoa,Opencv,有一篇文章描述了如何做到这一点,这篇文章似乎对其他人有用,但它不适合我 以下是使用的.h文件的副本: // // NSImage+OpenCV.h // #import <AppKit/AppKit.h> @interface NSImage (NSImage_OpenCV) { } +(NSImage*)imageWithCVMat:(const cv::Mat&)cvMat; -(id)initWithCVMat:(const cv::Mat&)cvMa
//
// NSImage+OpenCV.h
//
#import <AppKit/AppKit.h>
@interface NSImage (NSImage_OpenCV) {
}
+(NSImage*)imageWithCVMat:(const cv::Mat&)cvMat;
-(id)initWithCVMat:(const cv::Mat&)cvMat;
@property(nonatomic, readonly) cv::Mat CVMat;
@property(nonatomic, readonly) cv::Mat CVGrayscaleMat;
@end
//
//NSImage+OpenCV.h
//
#进口
@接口NSImage(NSImage_OpenCV){
}
+(NSImage*)带有cvMat的图像:(常数cv::Mat&)cvMat;
-(id)initWithCVMat:(const cv::Mat&)cvMat;
@属性(非原子,只读)cv::Mat CVMat;
@属性(非原子,只读)cv::Mat CVGrayscaleMat;
@结束
我使用的是Xcode 4.4,使用的是openCV 2.4.2。我得到的头文件编译器错误是以下错误的4倍:
语义问题:使用未声明的标识符“cv”
这个错误似乎相当明显…头文件没有定义什么是cv::Mat。
因此,我从OpenCV 2.4教程中猜出了一个需要添加的内容
#包括
这产生了20个其他错误,其中编译器抱怨core.hpp文件。
第一条说:
语义问题:非常量静态数据成员的初始化必须越行
所以我的问题是我做错了什么?我如何让这个代码工作?< /P> < P>这是C++语法。您必须为源文件提供
.mm
后缀,使其成为Objective-C++。另一个stackoverflow Q&A(链接:)在未定义的符号上有缺失的部分
总结如下:
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif
#ifdef_uuobjc__
#进口
#恩迪夫
相反,应将文件更改为如下所示:
#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif
\ifdef\uuucplusplus
#进口
#恩迪夫
#ifdef__OBJC__
#进口
#恩迪夫
因此,对于任何*.cpp文件,opencv头都会自动添加。对于任何*.m文件,都会添加Cocoa头。在*.mm文件的特殊情况下,它们都会以正确的顺序添加
伊恩·查纳斯(Ian Charnas)和用户671435(user671435)发现了这一点,我对此表示感谢。我已经做到了。编译器可以识别语法,但不能识别未定义的符号“cv”和“Mat”。您的回答帮助我解决了xcode中的大多数错误,但在我完成上述操作后,lsh_table.h“语义问题:使用未声明的标识符‘Use_speed’”中仍有一个错误。你知道我该怎么摆脱它吗?谢谢