У меня все еще есть проблема. Вы можете помочь ((

алсяCore.hpp, Base.hpp header must be compiled as C++ ошибка. У меня установлен BITCODE какNO.

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

@interface OpenCV : NSObject
    /// Converts a full color image to grayscale image with using OpenCV.
+ (nonnull UIImage *)cvtColorBGR2GRAY:(nonnull UIImage *)image;
+ (cv::Mat)cvMatFromAdjustedUIImage:(UIImage *)image;
+ (cv::Mat)cvMatFromUIImage:(UIImage *)image;
+ (cv::Mat)cvMatGrayFromUIImage:(UIImage *)image;
+ (cv::Mat)cvMatGrayFromAdjustedUIImage:(UIImage *)image;
@end

В моемOpenCVSample.mm Я включил#import "OpenCV.h в шапке.

Git:https://github.com/n1tesh/OpenCV-Demo

 Prashant Tukadiya19 сент. 2017 г., 08:08
Покажите свой заголовочный файл Bridging
 Nitesh19 сент. 2017 г., 08:09
Файл заголовка @JonSnow Bridging -#import "OpenCV.h" , И пробовал только строить активную архитектуру -NO но все та же ошибка.
 Jack19 сент. 2017 г., 07:54
Файлы .mm должны быть соблюдены как объективный источник c ++ в инспекторе.
 Nitesh19 сент. 2017 г., 07:57
@ Джек Да. Изменили тип наObjective-C++ Source но все та же ошибка.
 Prashant Tukadiya19 сент. 2017 г., 08:07
В настройках сборки найдите Build Active Architecture Only и установите значение NO

Ответы на вопрос(1)

Решение Вопроса

это файл заголовка прекомпиляции. СоздатьPrefixHeader.pch файлв той же папке с файлом .xcodeproj с содержанием:

#ifndef PrefixHeader_pch
#define PrefixHeader_pch

#ifdef __cplusplus
#include "opencv2/opencv.hpp"
// include other opencv2 headers if needed.
#endif

#endif /* PrefixHeader_pch */

Затем перейдите в настройки сборки проекта, найдите заголовок префикса и установите егоPrefixHeader.pch.

Кроме того, если вы хотите позвонить в бриджMMOpenCVHelper.h к вашему быстрому коду, это должен быть только Objective-C ++. Поместите что-нибудь OpenCV, или стандартный C ++, вMMOpenCVHelper.mm, Например:

MMOpenCVHelper.h:

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

// These two headers god to mm file
// #include <opencv2/imgproc/imgproc.hpp>
// #include <opencv2/highgui/highgui.hpp>


@interface MMOpenCVHelper : NSObject
+ (UIImage *) applyOpenCVTo: (UIImage*) uiImage;

// these methods have to be in mm file, hence private
// + (UIImage *)UIImageFromCVMat:(cv::Mat)cvMat;
// + (cv::Mat)cvMatFromAdjustedUIImage:(UIImage *)image;
// + (cv::Mat)cvMatFromUIImage:(UIImage *)image;
// + (cv::Mat)cvMatGrayFromUIImage:(UIImage *)image;
// + (cv::Mat)cvMatGrayFromAdjustedUIImage:(UIImage *)image;


@end

А такжеMMOpenCVHelper.mm:

#import "MMOpenCVHelper.h"
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

@implementation MMOpenCVHelper

// implementation of public methods:
+ (UIImage *) applyOpenCVTo: (UIImage*) uiImage{
    cv::Mat cvFrame = [MMOpenCVHelper cvMatFromAdjustedUIImage: uiImage];
    // do something with cvFrame using OpenCV
    cv::Mat ret = cvFrame.clone();

    return [MMOpenCVHelper UIImageFromCVMat: ret];
}

// Implementations of the conversion functions:
+ (UIImage *)UIImageFromCVMat:(cv::Mat)cvMat{
    // do something here
    return uiImage;
}

+ (cv::Mat)cvMatFromAdjustedUIImage:(UIImage *)image;
+ (cv::Mat)cvMatFromUIImage:(UIImage *)image;
+ (cv::Mat)cvMatGrayFromUIImage:(UIImage *)image;
+ (cv::Mat)cvMatGrayFromAdjustedUIImage:(UIImage *)image;
@end

ПозжеSomeSwiftFile.swift Вы можете сделать (пожалуйста, проверьте это, так как я не очень знаком со Swift):

let UIImage * processedImage = MMOpenCVHelper.applyOpenCVTo(uiImage);
 famfamfam15 авг. 2018 г., 18:50
У меня все еще есть проблема. Вы можете помочь ((

Ваш ответ на вопрос