我是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 ++
答案 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了解示例代码。