`
cwh643
  • 浏览: 127542 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

Iphone上开发ARToolkit应用的注意事项总结

阅读更多
原创文章,欢迎转载,转载时务必注明原文地址及作者

1. 如何调整uiimage的大小
//改变图片到指定的尺寸
-(UIImage*)resizedImage:(UIImage*)inImage  inRect:(CGRect)thumbRect {
	
	// Creates a bitmap-based graphics context and makes it the current context.
	UIGraphicsBeginImageContext(thumbRect.size);
	[inImage drawInRect:thumbRect];
	return UIGraphicsGetImageFromCurrentImageContext();
}

2. 如何取得uiimage图像中的RGB数据
//uiimage编码成ARGB
- (CGContextRef) createARGBBitmapContextFromImage:(CGImageRef) inImage {
	
    CGContextRef    context = NULL;
    CGColorSpaceRef colorSpace;
    void *          bitmapData;
    int             bitmapByteCount;
    int             bitmapBytesPerRow;
	
    // Get image width, height. We'll use the entire image.
    size_t pixelsWide = CGImageGetWidth(inImage);
    size_t pixelsHigh = CGImageGetHeight(inImage);
	//int pixelsWide, pixelsHigh;
	//ar2VideoGetSize(gVid, &pixelsWide, &pixelsHigh);
	
    // Declare the number of bytes per row. Each pixel in the bitmap in this
    // example is represented by 4 bytes; 8 bits each of red, green, blue, and
    // alpha.
    bitmapBytesPerRow   = (pixelsWide * 4);
    bitmapByteCount     = (bitmapBytesPerRow * pixelsHigh);
	
    // Use the generic RGB color space.
    colorSpace = CGColorSpaceCreateDeviceRGB();
	//colorSpace = CGImageGetColorSpace(inImage);
	
    if (colorSpace == NULL)
    {
        fprintf(stderr, "Error allocating color space\n");
        return NULL;
    }
	
    // Allocate memory for image data. This is the destination in memory
    // where any drawing to the bitmap context will be rendered.
    bitmapData = malloc( bitmapByteCount );
    if (bitmapData == NULL)
    {
        fprintf (stderr, "Memory not allocated!");
        CGColorSpaceRelease( colorSpace );
        return NULL;
    }
	
    // Create the bitmap context. We want pre-multiplied ARGB, 8-bits
    // per component. Regardless of what the source image format is
    // (CMYK, Grayscale, and so on) it will be converted over to the format
    // specified here by CGBitmapContextCreate.
    context = CGBitmapContextCreate (bitmapData,
									 pixelsWide,
									 pixelsHigh,
									 8,      // bits per component
									 bitmapBytesPerRow,
									 colorSpace,
									 kCGImageAlphaPremultipliedFirst);// kCGImageAlphaNone
    if (context == NULL)
    {
        free (bitmapData);
        fprintf (stderr, "Context not created!");
    }
	
    // Make sure and release colorspace before returning
    CGColorSpaceRelease( colorSpace );
	
    return context;
}

3. 如何识别多个marker文件
//配置ar识别marker参数
static int setupMarker(const char *patt_name, int *patt_id, ARHandle *arhandle, ARPattHandle **pattHandle_p)
{	
	//此处修改支持识别多个marker文件
	if (*pattHandle_p == NULL) {
		*pattHandle_p = arPattCreateHandle();
		if (*pattHandle_p == NULL) {
			fprintf(stderr, "setupMarker(): Error: arPattCreateHandle.\n");
			return (FALSE);
		}
		arPattAttach(arhandle, *pattHandle_p);
	}
    
	if ((*patt_id = arPattLoad(*pattHandle_p, patt_name)) < 0) {
		fprintf(stderr, "setupMarker(): Error loading pattern file %s.\n", patt_name);
		arPattDeleteHandle(*pattHandle_p);
		return (FALSE);
	}
	
	return (TRUE);
}

4. 如何取得识别出的marker的外框坐标点
gARHandle->markerInfo[0]. vertex

5. 如何绘画识别出的marker的外框以及对于的图片背景
//画出marker的外框
- (void)drawMarkerRect {
	CGContextRef context = UIGraphicsGetCurrentContext();
	CGContextSetStrokeColorWithColor(context, [UIColor greenColor].CGColor);//颜色
	CGContextSetLineWidth(context, 2.0);//线宽
	//画线
	CGContextMoveToPoint(context,x1, y1);
	CGContextAddLineToPoint(context, x2, y2);
	CGContextAddLineToPoint(context, x3, y3);
	CGContextAddLineToPoint(context, x4, y4);
	CGContextAddLineToPoint(context, x1, y1);
	CGContextStrokePath(context);
}	
//描绘识别marker外框的模式
	self.backgroundColor = [UIColor colorWithPatternImage:mimage];

6. 如何利用NSTimer来实现异步调用
//延迟加载视频,让画出marker的画面显示一下
			mTimer = [NSTimer scheduledTimerWithTimeInterval:INTERVAL_SEC target:self selector:@selector(playMovie:) userInfo:nil repeats:NO];
//播放视频
- (void)playMovie:(NSTimer *)timer {
	[viewController playMovie:currentTag.movie];
	[mTimer release];
	mTimer = nil;
}

7. 如何保存当前图片到图片文件夹
//保持图片到照片文件夹
-(void)saveToPhotosAlbum:(UIImage *)image {
	CGContextRef context = UIGraphicsGetCurrentContext();
	UIImageWriteToSavedPhotosAlbum(image, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), context);
	UIGraphicsEndImageContext();
}

//保存图片时的回调
-(void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
	if (!error) {
		NSLog(@"image Has Saved");
	} else {
		NSLog(@"image Saving failed");
	}
}

8. 如何链接artoolkit的c实现库(artoolkit4)
设定【Search Paths】下的【Header Search Paths】,值为artoolkit库的头文件目录相对路径,设定【Search Paths】下的【Library Search Paths】,值为artoolkit库的链接文件目录相对路径
2
0
分享到:
评论
1 楼 muyu114 2014-02-28  
你是用的Artoolkit库在哪下载的啊,我没找到

相关推荐

    Artoolkit开发包附win7+vs2013配置教程

    本文将深入探讨如何在Windows 7操作系统上,利用Visual Studio 2013进行Artoolkit的配置,以实现高效、稳定的AR应用开发。 首先,Artoolkit的安装与配置并非易事,尤其是对于初学者而言。但不用担心,本教程提供的...

    基于ARToolKit的增强现实系统开发与应用

    ### 基于ARToolKit的增强现实系统开发与应用:深入解析 #### ARToolKit:增强现实领域的关键工具 ARToolKit,全称为Augmented Reality Tool Kit,是一款开源的增强现实(AR)软件开发包,专为研究人员、开发者提供了...

    ARToolKit开发包

    ARToolKit是一款强大的开源软件开发工具包,专为构建增强现实(AR)应用程序而设计。这个开发包使得开发者能够将虚拟信息与真实世界无缝融合,创造互动式、沉浸式的体验。AR技术通过摄像头捕捉现实环境,并在屏幕上...

    windows10+VS2013+Artoolkit+Opencv2.4.10

    ### Windows10+VS2013+Artoolkit+Opencv2.4.10 配置详解 #### 一、概述 ...通过上述步骤,您应该能够在Windows10+VS2013环境下成功配置ARToolKit并集成OpenCV 2.4.10,为开发增强现实应用打下坚实的基础。

    ARToolKit技术预研报告

    总结来说,ARToolKit是实现AR应用的重要工具,它简化了开发过程,促进了AR技术在各个领域的广泛应用。通过学习和掌握ARToolKit,开发者可以创造出更多富有创意和实用性的增强现实应用,进一步改变我们的生活和工作...

    ARtoolkit资料

    ARtoolkit是开源的AR开发框架,广泛应用于AR应用的开发,为研究者和开发者提供了强大的工具。 这份"ARtoolkit资料"压缩包显然包含了关于AR技术特别是ARtoolkit的相关资源,适合对AR技术感兴趣或正在进行相关研究的...

    ARToolkit NFT 帮助文档

    在开发过程中,开发者可以利用ARToolKit NFT提供的API和工具,对平面上的纹理进行分析和处理,训练模型以识别特定的自然特征,然后在实际应用中实现高效稳定的跟踪。总的来说,ARToolkit NFT是推动AR技术向前发展的...

    ARToolkit在VS2010(Win7 64位)下的配置及第一个开发程序的编译与运行

    在Windows 7(64位)系统和Visual Studio 2010(VS2010)的开发环境中配置ARToolkit并编译运行程序,是增强现实应用开发的常见需求。以下是详细知识点总结: 1. 运行环境要求: - 操作系统:Windows 7 64位版本是...

    Artoolkit多个标识

    ARToolKit是一个强大的增强现实(AR)开发框架,它允许开发者创建可以与真实世界互动的虚拟内容。在“Artoolkit多个标识”这个主题中,我们主要探讨的是如何利用ARToolKit处理和识别多个图像标识,以及MQO模型在其中...

    ARToolKit for Unity插件包及说明

    ARToolKit是一款强大的增强现实(AR)开发框架,它为开发者提供了一套工具,使得在各种平台上构建AR应用变得简单。这个插件包是专为Unity设计的,Unity是一款广泛使用的跨平台游戏引擎,同时也被广泛应用到AR和VR...

    AR demo ARToolkit单个项目实例

    本示例项目“AR demo - ARToolkit单个项目实例”是一个简单的AR应用开发案例,它可以帮助开发者快速理解ARToolkit的工作原理和使用方法。当你下载并解压这个压缩包后,你会得到一个名为"oneDemo"的项目文件,这通常...

    ARToolKit标签识别程序

    ARToolKit是一个开源的AR开发框架,它为开发者提供了在各种平台上构建AR应用的工具和库。 ARToolKit的核心功能之一是多标签识别,这意味着它可以同时识别多个不同的标记。这在多种场景下非常有用,比如在零售环境中...

    ARToolKit-2.72.1.tgz

    ARToolKit是一款强大的开源增强现实(AR)开发框架,主要用于创建与现实世界交互的虚拟环境。版本2.72.1是该软件的一个特定发行版,可能包含了对之前版本的改进和修复,以提高稳定性和功能。这个tgz文件是一个压缩包...

    ARToolkit在地下管网上的应用

    ### ARToolkit在地下管网上的应用 #### 增强现实技术与地下管网管理的结合 在城市管理中,地下管网的维护和管理一直是一项复杂而艰巨的任务。传统的管理方式往往依赖于二维图纸和实地勘测,这不仅耗时耗力,而且在...

    Artoolkit单个循环播放的模型

    ARToolKit是一个开源的增强现实(AR)开发框架,它为开发者提供了在现实世界中叠加虚拟信息的能力。这个框架支持多种平台,包括Android、iOS和桌面系统,使得用户可以创建各种AR应用。AR技术的核心在于识别现实世界...

    artoolkit介绍

    在开发AR应用时,可以参考ARToolKit的example目录下的代码,如simpletest.c,了解如何初始化、捕获视频、检测标记、计算变换矩阵以及绘制和关闭相关操作。 总的来说,ARToolKit提供了一个高效且灵活的平台,帮助...

    ARToolKit2.65

    2. **透视校正**:由于摄像头通常采用透视投影,ARToolKit包含算法来校正这种透视变形,确保虚拟对象在屏幕上以正确的比例和位置显示。 3. **实时处理**:ARToolKit设计为实时系统,可以在捕获视频流的同时进行图像...

    ARToolkit配置所需文件

    ARToolkit是一款强大的增强现实软件开发工具包,它允许开发者创建基于图像识别的AR应用。配置ARToolkit涉及到多个步骤,包括安装必要的依赖库、设置环境变量、编译源代码以及调试。下面将详细介绍这些过程。 首先,...

Global site tag (gtag.js) - Google Analytics