c++ - 如何将 C++ 矢量数据导入 Swift
问题描述
我有一个由 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++ 数据结构,我希望从向量中提取值。
提前致谢。
解决方案
你不能std::vector
从 Swift 中使用,所以不要返回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;
}
推荐阅读
- javascript - 如何:javascript(节点)中的 wsse soap 请求
- file - Spring应用部署在多台服务器上时文件存放在哪里
- vba - VBA 找不到特定的 dll
- r - 将某些列的值和列名的所有组合放入一行
- javascript - 我似乎不明白循环是如何工作的,所以答案是 55,增量是如何完成的?
- .net - “System.IO.MemoryStream”类型的对象无法转换为“ExcelDataReader.IExcelDataReader”类型
- php - 使用 Ajax 使用 Select 选项更新数据库,而不是使用按钮的表单
- sql-server - 在 DB2 中选择 Top rows 和 Order by NEWID()
- python - Python 格式化字符串
- ibm-midrange - 捕获 IBM i Db2 SQL“替代文件名”