OpenCV是用C编写的框架。苹果的
reference告诉我们
原文链接:https://www.f2er.com/swift/321261.htmlYou cannot import C++ code directly into Swift. Instead,create an Objective-C or C wrapper for C++ code.
所以你不能在一个swift项目中直接导入和使用OpenCV,但这实际上并不坏,因为你(需要)继续使用框架的C语法,这是在网络上有很多文档。
那么你怎么进行呢?
>创建一个新的Objective-C类(.h,.mm)
OpenCVWrapper.h
#import <UIKit/UIKit.h> #import <Foundation/Foundation.h> @interface OpenCVWrapper : NSObject + (UIImage *)processImageWithOpenCV:(UIImage*)inputImage; @end
OpenCVWrapper.mm(您还需要向项目添加一个UIImage OpenCV类别)
#include "OpenCVWrapper.h" #import "UIImage+OpenCV.h" #include <opencv2/opencv.hpp> using namespace cv; using namespace std; @implementation OpenCVWrapper : NSObject + (UIImage *)processImageWithOpenCV:(UIImage*)inputImage { Mat mat = [inputImage CVMat]; // do your processing here ... return [UIImage imageWithCVMat:mat]; } @end
>更新Bridging-Header导入我们新创建的包装器(#import“OpenCVWrapper.h”)
>在你的Swift文件中使用你的包装
let image = UIImage(named: "image.jpeg") let processedImage = OpenCVWrapper.processImageWithOpenCV(image)