首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增强现实

增强现实
EN

Stack Overflow用户
提问于 2011-09-07 21:18:04
回答 2查看 987关注 0票数 3

我想在相机的图像上画出那个地方的图钉和信息。请任何人帮助我..我已经在应用程序委托中进行了编码,代码是:

代码语言:javascript
复制
overlay = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; overlay.opaque = NO; overlay.backgroundColor=[UIColor clearColor]; 
    [window addSubview:overlay]; 
#define CAMERA_TRANSFORM 1.24299 
    UIImagePickerController *uip;
    @try {
        uip = [[[UIImagePickerController alloc] init] autorelease];
        uip.sourceType = UIImagePickerControllerSourceTypeCamera; uip.showsCameraControls = NO;
        uip.toolbarHidden = YES; 
        uip.navigationBarHidden = YES; 
        uip.wantsFullScreenLayout = YES;
        uip.cameraViewTransform = CGAffineTransformScale(uip.cameraViewTransform, CAMERA_TRANSFORM, CAMERA_TRANSFORM); 
    } 
    @catch (NSException * e) 
    { [uip release]; 
        uip = nil;
    }
    @finally
    { if(uip) {
        [overlay addSubview:[uip view]]; [overlay release]; }
    }

它显示了我想要检测的位置的camera.Not,并将大头针放在该位置上,显示了该位置的信息。

EN

回答 2

Stack Overflow用户

发布于 2011-09-07 21:57:40

这里有一个更简单的方法来检测摄像头的存在:

代码语言:javascript
复制
BOOL isCameraAvailable = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];

恐怕还有99%的工作要做。粗略地说,您需要以下内容:

  1. 获取用户的地理位置。
  2. 获取要显示的兴趣点的地理位置。您可能需要使用第三方库,如Foursquare,谷歌地图,或类似that.
  3. Calculate的东西使用两个点之间的直角三角形来测量用户和POI之间的距离h^2=c^2+c^2。

请注意,球面几何中的距离是用半正弦公式计算的,但是如果我们假设笛卡尔坐标,那么精度损失对于小距离来说是不相关的,所以我们就这样做。

  • 假设东是0º,得到用户到POI的角度,这是atan dy/dx (y=latitude,x=longitude)。dy当然是用户和POI之间的纬度差。

  • 从指南针获取方位,并计算用户方位和POI角度之间的差。

  • 对象在屏幕上的位置取决于方位和设备方向。如果用户正在查看POI,请在屏幕中间绘制POI的标签。如果存在与精确角度的偏移,请乘以offset * (width in pixels / horizontal field vision)以获得表示点的标签的偏移(以像素为单位)。对垂直偏移执行相同的操作。
  • 如果X轴(see the axis here)上有旋转,则应用垂直偏移。
  • 如果Y轴上有旋转,则指南针的方位角将进行更新。
  • 如果Z轴上有旋转,如果对象靠近,则在相反的angle.

中旋转该对象

  1. 根据距离缩放标注,有最小值和最大值。

要定位标签,您可能需要使用3D引擎或围绕设备(x=x+r*cos、y=y+r*sin)旋转它们,并使用广告牌效果。

如果这听起来像是太多的工作,那么专注于使用offset * width in pixels / horizontal field vision实现对方位变化的响应。水平视场是相机的可视角度。对于人类来说是180º,对于iPhone 3是37.5,而对于iPhone 4是45º吗?宽度为320,因此,如果您的视线远离目标,则必须将其水平移动到远离中心的320*10/37.5像素。

如果指南针的读数有太多噪声,请添加一个低通滤波器。

票数 7
EN

Stack Overflow用户

发布于 2011-09-30 17:09:43

请通过

https://github.com/zac/iphonearkit

这是目前最好的objectiveC代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7334523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档