图物识别

iOS AR -基于EasyAR的图片识别,显示详情等应用场景

2017-08-25  本文已影响226人  FTC陳
iOS11推出ARKit,用来实现在现实场景中的增强现实等一系列操作,在分析ARKit的过程中,对国内外其它的一些ARSDK的应用场景进行分析,写了个对固定图片/物体进行扫描识别,进行一些后续操作的Demo,以供参考.

主要内容:
(1)识别固定图片或物体,进行后续界面性质操作
(2)识别固定图片或物体,显示出对应模型,进行模型性质操作

一.主要代码
(1)识别 + 界面性质操作

对于集成EasyAR的操作,不做过多说明,参照官方demo即可
当前集成SDK版本为: EasyAR_SDK_2.0.0_Basic_Samples_iOS

特别注意: ViewController 继承于 GLKViewController

1.替换需要扫描的图片为自己的图片
BOOL initialize() 方法中更改图片设置:

//替换图片
if (!status) { return status; }
easyar_ImageTracker * tracker = [easyar_ImageTracker create];
[tracker attachStreamer:streamer];
//    loadFromJsonFile(tracker, @"targets.json", @"argame");
//    loadFromJsonFile(tracker, @"targets.json", @"idback");
//    loadAllFromJsonFile(tracker, @"targets2.json");
loadFromImage(tracker, @"test2.jpeg");
trackers = [[NSMutableArray<easyar_ImageTracker *> alloc] init];
[trackers addObject:tracker];
更改识别图片.png

2.增加识别成功与失败的方法
void render() 方法中增加方法:

//增加方法
if ([frame targetInstances].count==0) {
    NSLog(@"图片识别失败");
    [[NSNotificationCenter defaultCenter]postNotificationName:@"PicRecognitionFail" object:nil userInfo:nil];
}else{
    for (easyar_TargetInstance * targetInstance in [frame targetInstances]) {
        easyar_TargetStatus status = [targetInstance status];
        if (status == easyar_TargetStatus_Tracked) {
            NSLog(@"图片识别成功");
            //图片识别成功
            [[NSNotificationCenter defaultCenter]postNotificationName:@"PicRecognitionSuccess" object:nil userInfo:nil];
            //            easyar_Target * target = [targetInstance target];
            //            easyar_ImageTarget * imagetarget = [target isKindOfClass:[easyar_ImageTarget class]] ? (easyar_ImageTarget *)target : nil;
            //            if (imagetarget == nil) {
            //                continue;
            //            }
            //            [box_renderer render:[camera projectionGL:0.2f farPlane:500.f] cameraview:[targetInstance poseGL] size:[imagetarget size]];
        }
    }
}

3.识别成功后执行需要的方法

//增加需要执行的方法
//识别成功
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(abc) name:@"arSuccess" object:nil];
- (void)PRScuccess{
     NSLog(@"识别成功操作");
}

//识别失败
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(abcabc) name:@"arFail" object:nil];
- (void)PRFail{
   NSLog(@"识别失败操作");
}
(2)识别 + 模型性质操作

对于模型性质的操作,需要集合Unity进行开发(包括模型动画,模型音频等),现对EasyARSDK中,Unitydemo进行导出iOS工程

1.设置EasyAr的key


设置EasyAr-ke�y.png

2.导出iOS工程

导出iOS工程.png
二.实现效果
(1)对固定图片/物体识别 + 界面性质操作 (界面显示文字,图片,视频等)
图片实物识别:界面操作.gif
(2)对固定图片/物体识别 + 模型性质操作

此处是导出EasyARSDK中,Unitydemo的iOS工程,进行识别

特别注意: InfoPlist文件中添加访问相机权限
Easyardemo.gif
四.Demo地址

欢迎star : https://github.com/FTC-Chen/EasyARTest-Demo1

有任何问题请私信或者留言,或者有更好的实现方法,也请告诉我.

上一篇下一篇

猜你喜欢

热点阅读