导入CvVideoCamera

时间:2017-05-13 06:53:38

标签: ios swift opencv3.0

我是OpenCV的新手,我很难在我的快速项目中使用CvVideoCamera!

我正在使用openCV 3.2.0和swift 3.1

我有OpenCVWrapper文件,我也在我的桥接头中导入它。 在我的OpenCVWrapper.mm文件中我导入 opencv2 / videoio / cap_ios.h 但仍然在我的快速视图控制器中我没有得到任何CvVideoCamera类型!!

这是我的包装和桥接标题

OpenCVWrapper.h

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

@interface OpenCVWrapper: NSObject
@end

OpenCVWrapper.mm

#include <opencv2/opencv.hpp>
#include "OpenCVWrapper.h"
#import <opencv2/videoio/cap_ios.h>

using namespace cv;
using namespace std;

@implementation OpenCVWrapper : NSObject


@end

和CSOpenCV-Bridging-Header.h

#import "OpenCVWrapper.h"

任何人都可以告诉我为什么我不能在我的快速视图控制器中启动CvVideoCamera

p.s:我还尝试直接在我的桥接头文件中导入 opencv2 / videoio / cap_ios.h 但是编译错误说

  

错误base.hpp标头必须编译为C ++

1 个答案:

答案 0 :(得分:2)

好吧,放弃swift使用opencv后我在github上发现了一个使用AVCaptureSession和AVCaptureVideoDataOutput来获取摄像头的示例应用程序,然后使用

Intent intent = new Intent(MainActivity.this, MainActivity.class);
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                 | Intent.FLAG_ACTIVITY_CLEAR_TASK
                 | Intent.FLAG_ACTIVITY_NEW_TASK);
         PendingIntent pendingIntent = PendingIntent.getActivity(ApplicationClass.getInstance().getBaseContext(), 0, intent, PendingIntent.FLAG_ONE_SHOT);
         AlarmManager mgr = (AlarmManager) ApplicationClass.getInstance().getBaseContext().getSystemService(Context.ALARM_SERVICE);
         mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, pendingIntent);
         System.exit(2);
         ((ActivityManager)MainActivity.this.getSystemService(ACTIVITY_SERVICE)).clearApplicationUserData();

从会话中获取样本缓冲区。然后使用opencvwrapper将CMSampleBuffer转换为cv :: Mat。

结帐here了解示例代码。