首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标识别vuforia

目标识别vuforia
EN

Stack Overflow用户
提问于 2017-07-03 13:48:58
回答 2查看 317关注 0票数 2

我正在使用" vuforia“SDK在I中进行对象识别。我正在使用vuforia提供的示例代码,并能够使用"ObjectReco”部分来识别对象。

代码语言:javascript
复制
- (void)renderFrameWithState:(const Vuforia::State &)state projectMatrix:(Vuforia::Matrix44F &)projectionMatrix{
[self setFramebuffer];
// Clear colour and depth buffers
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

// Render video background
[sampleAppRenderer renderVideoBackground];

glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

for (int i = 0; i < state.getNumTrackableResults(); ++i) {
    // Get the trackable
    const Vuforia::TrackableResult* result = state.getTrackableResult(i);
    const Vuforia::Trackable& trackable = result->getTrackable();

    if (! result->isOfType(Vuforia::ObjectTargetResult::getClassType())) {
        continue;
    }

    NSLog(@"@>@ ObjectTarget found!");

    const Vuforia::ObjectTarget& objectTarget = (const Vuforia::ObjectTarget&) trackable;

    Vuforia::Vec3F objectSize = objectTarget.getSize();

    //const Vuforia::Trackable& trackable = result->getTrackable();
    Vuforia::Matrix44F modelViewMatrix = Vuforia::Tool::convertPose2GLMatrix(result->getPose());

    // OpenGL 2
    Vuforia::Matrix44F modelViewProjection;

    SampleApplicationUtils::translatePoseMatrix(objectSize.data[0]/2,
                                                objectSize.data[1]/2,
                                                objectSize.data[2]/2,
                                                &modelViewMatrix.data[0]);
    SampleApplicationUtils::scalePoseMatrix(objectSize.data[0]/2,
                                            objectSize.data[1]/2,
                                            objectSize.data[2]/2,
                                            &modelViewMatrix.data[0]);

    SampleApplicationUtils::multiplyMatrix(&projectionMatrix.data[0], &modelViewMatrix.data[0], &modelViewProjection.data[0]);

    glUseProgram(shaderProgramID);

    glVertexAttribPointer(vertexHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)cubeVertices);
    glVertexAttribPointer(normalHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)cubeNormals);
    glVertexAttribPointer(textureCoordHandle, 2, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)cubeTexCoords);

    glEnableVertexAttribArray(vertexHandle);
    glEnableVertexAttribArray(normalHandle);
    glEnableVertexAttribArray(textureCoordHandle);

    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, augmentationTexture[0].textureID);
    glUniformMatrix4fv(mvpMatrixHandle, 1, GL_FALSE, (const GLfloat*)&modelViewProjection.data[0]);
    glUniform1i(texSampler2DHandle, 0 /*GL_TEXTURE0*/);

    glDrawElements(GL_TRIANGLES, NUM_CUBE_INDEX, GL_UNSIGNED_SHORT, (const GLvoid*)cubeIndices);

    glDisableVertexAttribArray(vertexHandle);
    glDisableVertexAttribArray(normalHandle);
    glDisableVertexAttribArray(textureCoordHandle);

    SampleApplicationUtils::checkGlError("EAGLView renderFrameVuforia");

}

glDisable(GL_DEPTH_TEST);
glDisable(GL_BLEND);
glDisable(GL_CULL_FACE);
[self presentFramebuffer];}

我可以在"NSLog(@"@>@ ObjectTarget found!");“上获取对象。”现在我想用另一个对象(图像)替换这个对象(图像)我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2017-11-04 12:43:28

请访问Vuforia官方网站。他们有一系列关于如何将预设目标图像更改为您自己的图像的说明。我认为你首先需要将你自己的目标图像上传到Vurforia上,然后他们会向你显示进行下一步的说明。希望能有所帮助

票数 0
EN

Stack Overflow用户

发布于 2018-12-09 13:04:03

如果我没弄错的话:在Vuforia中,我们通过将我们的新对象放在与目标对象相同的层次结构中进行了替换,一旦Vuforia识别出目标对象,它就会出现!您可以通过对象覆盖目标(在编辑器中)。

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

https://stackoverflow.com/questions/44878557

复制
相关文章

相似问题

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