代码之家  ›  专栏  ›  技术社区  ›  Cristian

如何将C++矢量数据导入SWIFT

  •  0
  • Cristian  · 技术社区  · 6 年前

    我有一个C++函数,它被SWIFT调用,我需要返回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++数据结构,我想从向量中提取值。

    事先谢谢。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Macmade    6 年前

    你不能用 std::vector 来自Swift,所以不要返回 STD::载体 .

    因为向量包含 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;
    }