我有一个Swift调用的C ++函数,我需要返回UIIMage的std::vector<UIImage *>
的向量。唯一的问题是我不知道如何检索向量的值。
C ++文件1:
// OpenCVWrapper.h
#import <UIKit/UIKit.h>
@interface OpenCVWrapper : NSObject
+(???) convert:(UIImage *) image;
@end
文件2:
// OpenCVWrapper.mm
#import "OpenCVWrapper.h"
#import <opencv2/opencv.hpp>
#import <opencv2/imgcodecs/ios.h>
class Converter {
public:
UIImage *image;
std::vector<UIImage *> main() {
// run code
return finalImage;
};
};
@implementation OpenCVWrapper
+(std::vector<UIImage *>) convert:(UIImage *)image {
Converter converter;
converter.image = image;
std::vector<UIImage *>newImage = converter.main();
return newImage;
}
@end
迅速:
var multipleImages = OpenCVWrapper.convert(originalImage) //want array
我知道Swift不会导入c ++数据结构,我想从向量中提取值。
谢谢。
答案 0 :(得分:2)
您不能在Swift中使用std::vector
,所以请不要返回std::vector
。
由于向量包含UIImage
的实例,因此只需返回NSArray
:
+ ( NSArray< UIImage * > * )convert: ( UIImage * )image
{
Converter converter;
converter.image = image;
NSMutableArray * images = [ NSMutableArray new ];
for( auto i: converter.main() )
{
[ images addObject: i ];
}
return images;
}