內容目录

上一个主题

Image Class

下一个主题

ImageTracker Class

ImageTarget Class

Inherits: Target

Description

ImageTarget表示平面图像的target,它可以被 ImageTracker 所跟踪。

ImageTarget的大小可以在json文件里设置并通过setup方法载入,或者如果没有在进口中提供,将会从图像分辨率计算。

ImageTarget内的数值在可以被读取之前需要首先通过setup方法载入。然后再通过 ImageTracker.loadTargetImageTracker.loadTargetBlocked 成功载入 ImageTracker 之后可以被 ImageTracker 检测和跟踪。

Constructor

C: void easyar_ImageTarget__ctor(easyar_ImageTarget * * Return)
C++11: ImageTarget()
Traditional C++: ImageTarget()
Java: public ImageTarget()
Objective-C: + (easyar_ImageTarget *) create
Swift (since EasyAR SDK 2.1.0): public convenience init()

setup

从一个json文件或json字符串配置target。这个方法只会解析json文件或字符串。

如果name非空则配置名字为name的target,否则配置第一个target。

如果 path 是json文件的路径,storageType应该设成 AppAssetsAbsolute ,表示路径的类型。json文件内部的路径应该是绝对路径或相对于json文件的相对路径。

如果 path 是json字符串, storageType应该设成 (App | Json)(Assets | Json)( Absolute | Json) 。json字符串里的路径应该是绝对路径或相对于storageType所指向的根目录的相对路径。

关于StorageType的详细描述参见 StorageType

C: bool easyar_ImageTarget_setup(easyar_ImageTarget * This, easyar_String * path, int storageType, easyar_String * name)
C++11: bool setup(std::string path, int storageType, std::string name)
Traditional C++: bool setup(String * path, int storageType, String * name)
Java: public native boolean setup(java.lang.String path, int storageType, java.lang.String name)
Objective-C: - (bool)setup:(NSString *)path storageType:(int)storageType name:(NSString *)name
Swift (since EasyAR SDK 2.1.0): public func setup(_ path: String, _ storageType: Int32, _ name: String) -> Bool

setupAll

从类型为 storageType 的 path 中配置json文件或json字符串中列出的所有target。关于storageType和json文件的详细描述参见setup和 StorageType

C: void easyar_ImageTarget_setupAll(easyar_String * path, int storageType, easyar_ListOfPointerOfImageTarget * * Return)
C++11: static std::vector<std::shared_ptr<ImageTarget>> setupAll(std::string path, int storageType)
Traditional C++: static void setupAll(String * path, int storageType, ListOfPointerOfImageTarget * * Return)
Java: public static native java.util.ArrayList<ImageTarget> setupAll(java.lang.String path, int storageType)
Objective-C: + (NSArray<easyar_ImageTarget *> *)setupAll:(NSString *)path storageType:(int)storageType
Swift (since EasyAR SDK 2.1.0): public static func setupAll(_ path: String, _ storageType: Int32) -> [ImageTarget]

size

返回image target的大小。这个大小只有在使用 ImageTracker.loadTargetImageTracker.loadTargetBlocked 成功加载入 ImageTracker ,或是通过setSize手动设置之后才是有效(非0)的。

如果size没有通过json或setSize设置,将会返回通过图像分辨率进行计算得出的默认大小。

C: easyar_Vec2F easyar_ImageTarget_size(const easyar_ImageTarget * This)
C++11: Vec2F size()
Traditional C++: Vec2F size()
Java: public native Vec2F size()
Objective-C: - (easyar_Vec2F *)size
Swift (since EasyAR SDK 2.1.0): public func size() -> Vec2F

setSize

设置image target的大小,设置之后会覆盖默认值以及在json文件中设的数值。

size将会在 ImageTracker.loadTargetImageTracker.loadTargetBlocked 调用之后通过图像分辨率重新计算。在计算之后,size的最大值将被保持不变,仍为最大值,另一个维度则通过分辨率计算更新。需要在target成功加载之后调用size来获取实际使用的size数值。

如果size长宽比例在设置的时候就保证和图像分辨率一致,则在计算之后size不会发生变化。

C: bool easyar_ImageTarget_setSize(easyar_ImageTarget * This, easyar_Vec2F size)
C++11: bool setSize(Vec2F size)
Traditional C++: bool setSize(Vec2F size)
Java: public native boolean setSize(Vec2F size)
Objective-C: - (bool)setSize:(easyar_Vec2F *)size
Swift (since EasyAR SDK 2.1.0): public func setSize(_ size: Vec2F) -> Bool

images

返回target中存储的图像列表。通常这个方法用来获取云端返回的target的识别图数据。

C: void easyar_ImageTarget_images(easyar_ImageTarget * This, easyar_ListOfPointerOfImage * * Return)
C++11: std::vector<std::shared_ptr<Image>> images()
Traditional C++: void images(ListOfPointerOfImage * * Return)
Java: public native java.util.ArrayList<Image> images()
Objective-C: - (NSArray<easyar_Image *> *)images
Swift (since EasyAR SDK 2.1.0): public func images() -> [Image]

runtimeID

返回target id。target id是运行时创建的整型数据,只有在成功的配置之后才是有效(非0)的。这个id是非0且全局递增的。

C: int easyar_ImageTarget_runtimeID(const easyar_ImageTarget * This)
C++11: int runtimeID()
Traditional C++: int runtimeID()
Java: public native int runtimeID()
Objective-C: - (int)runtimeID
Swift (since EasyAR SDK 2.1.0): public override func runtimeID() -> Int32

uid

返回target uid。target uid在云识别算法中使用。在没有接入云识别的时候,你可以在json配置中设置这个uid,在自己的代码中作为另一种区分target的方法。

C: void easyar_ImageTarget_uid(const easyar_ImageTarget * This, easyar_String * * Return)
C++11: std::string uid()
Traditional C++: void uid(String * * Return)
Java: public native java.lang.String uid()
Objective-C: - (NSString *)uid
Swift (since EasyAR SDK 2.1.0): public override func uid() -> String

name

返回target名字。名字用来在json文件中区分target。更多描述参见setup。

C: void easyar_ImageTarget_name(const easyar_ImageTarget * This, easyar_String * * Return)
C++11: std::string name()
Traditional C++: void name(String * * Return)
Java: public native java.lang.String name()
Objective-C: - (NSString *)name
Swift (since EasyAR SDK 2.1.0): public override func name() -> String

meta

返回setMetaData所设置的meta data。或者在云识别返回的target里面,返回云端服务器所设置的meta data。

C: void easyar_ImageTarget_meta(const easyar_ImageTarget * This, easyar_String * * Return)
C++11: std::string meta()
Traditional C++: void meta(String * * Return)
Java: public native java.lang.String meta()
Objective-C: - (NSString *)meta
Swift (since EasyAR SDK 2.1.0): public override func meta() -> String

setMeta

设置meta data。这个操作会覆盖上一次的设置或是云端返回的数据。

C: void easyar_ImageTarget_setMeta(easyar_ImageTarget * This, easyar_String * data)
C++11: void setMeta(std::string data)
Traditional C++: void setMeta(String * data)
Java: public native void setMeta(java.lang.String data)
Objective-C: - (void)setMeta:(NSString *)data
Swift (since EasyAR SDK 2.1.0): public override func setMeta(_ data: String) -> Void