原创文章,欢迎转载,转载时务必注明原文地址及作者
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库的链接文件目录相对路径
分享到:
相关推荐
本文将深入探讨如何在Windows 7操作系统上,利用Visual Studio 2013进行Artoolkit的配置,以实现高效、稳定的AR应用开发。 首先,Artoolkit的安装与配置并非易事,尤其是对于初学者而言。但不用担心,本教程提供的...
### 基于ARToolKit的增强现实系统开发与应用:深入解析 #### ARToolKit:增强现实领域的关键工具 ARToolKit,全称为Augmented Reality Tool Kit,是一款开源的增强现实(AR)软件开发包,专为研究人员、开发者提供了...
ARToolKit是一款强大的开源软件开发工具包,专为构建增强现实(AR)应用程序而设计。这个开发包使得开发者能够将虚拟信息与真实世界无缝融合,创造互动式、沉浸式的体验。AR技术通过摄像头捕捉现实环境,并在屏幕上...
### Windows10+VS2013+Artoolkit+Opencv2.4.10 配置详解 #### 一、概述 ...通过上述步骤,您应该能够在Windows10+VS2013环境下成功配置ARToolKit并集成OpenCV 2.4.10,为开发增强现实应用打下坚实的基础。
总结来说,ARToolKit是实现AR应用的重要工具,它简化了开发过程,促进了AR技术在各个领域的广泛应用。通过学习和掌握ARToolKit,开发者可以创造出更多富有创意和实用性的增强现实应用,进一步改变我们的生活和工作...
ARtoolkit是开源的AR开发框架,广泛应用于AR应用的开发,为研究者和开发者提供了强大的工具。 这份"ARtoolkit资料"压缩包显然包含了关于AR技术特别是ARtoolkit的相关资源,适合对AR技术感兴趣或正在进行相关研究的...
在开发过程中,开发者可以利用ARToolKit NFT提供的API和工具,对平面上的纹理进行分析和处理,训练模型以识别特定的自然特征,然后在实际应用中实现高效稳定的跟踪。总的来说,ARToolkit NFT是推动AR技术向前发展的...
在Windows 7(64位)系统和Visual Studio 2010(VS2010)的开发环境中配置ARToolkit并编译运行程序,是增强现实应用开发的常见需求。以下是详细知识点总结: 1. 运行环境要求: - 操作系统:Windows 7 64位版本是...
ARToolKit是一个强大的增强现实(AR)开发框架,它允许开发者创建可以与真实世界互动的虚拟内容。在“Artoolkit多个标识”这个主题中,我们主要探讨的是如何利用ARToolKit处理和识别多个图像标识,以及MQO模型在其中...
ARToolKit是一款强大的增强现实(AR)开发框架,它为开发者提供了一套工具,使得在各种平台上构建AR应用变得简单。这个插件包是专为Unity设计的,Unity是一款广泛使用的跨平台游戏引擎,同时也被广泛应用到AR和VR...
本示例项目“AR demo - ARToolkit单个项目实例”是一个简单的AR应用开发案例,它可以帮助开发者快速理解ARToolkit的工作原理和使用方法。当你下载并解压这个压缩包后,你会得到一个名为"oneDemo"的项目文件,这通常...
ARToolKit是一个开源的AR开发框架,它为开发者提供了在各种平台上构建AR应用的工具和库。 ARToolKit的核心功能之一是多标签识别,这意味着它可以同时识别多个不同的标记。这在多种场景下非常有用,比如在零售环境中...
ARToolKit是一款强大的开源增强现实(AR)开发框架,主要用于创建与现实世界交互的虚拟环境。版本2.72.1是该软件的一个特定发行版,可能包含了对之前版本的改进和修复,以提高稳定性和功能。这个tgz文件是一个压缩包...
### ARToolkit在地下管网上的应用 #### 增强现实技术与地下管网管理的结合 在城市管理中,地下管网的维护和管理一直是一项复杂而艰巨的任务。传统的管理方式往往依赖于二维图纸和实地勘测,这不仅耗时耗力,而且在...
ARToolKit是一个开源的增强现实(AR)开发框架,它为开发者提供了在现实世界中叠加虚拟信息的能力。这个框架支持多种平台,包括Android、iOS和桌面系统,使得用户可以创建各种AR应用。AR技术的核心在于识别现实世界...
在开发AR应用时,可以参考ARToolKit的example目录下的代码,如simpletest.c,了解如何初始化、捕获视频、检测标记、计算变换矩阵以及绘制和关闭相关操作。 总的来说,ARToolKit提供了一个高效且灵活的平台,帮助...
2. **透视校正**:由于摄像头通常采用透视投影,ARToolKit包含算法来校正这种透视变形,确保虚拟对象在屏幕上以正确的比例和位置显示。 3. **实时处理**:ARToolKit设计为实时系统,可以在捕获视频流的同时进行图像...
ARToolkit是一款强大的增强现实软件开发工具包,它允许开发者创建基于图像识别的AR应用。配置ARToolkit涉及到多个步骤,包括安装必要的依赖库、设置环境变量、编译源代码以及调试。下面将详细介绍这些过程。 首先,...