【问题标题】:Object recognition vuforia物体识别 vuforia
【发布时间】:2017-07-03 05:48:57
【问题描述】:

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

- (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!");" 处获取对象现在我想用另一个对象(图像)替换这个对象(图像)我该怎么做?

【问题讨论】:

    标签: ios objective-c vuforia object-recognition


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果我说的是真的: 在 Vuforia 中,我们确实通过将新对象放在目标对象的同一层次结构中进行替换,一旦 Vuforia 识别出目标,它就会出现! 您可以用您的对象覆盖目标(在编辑器中)。

      【讨论】:

        猜你喜欢
        • 2013-12-15
        • 1970-01-01
        • 1970-01-01
        • 2022-01-18
        • 1970-01-01
        • 1970-01-01
        • 2010-11-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多