OpenBR使用实例

刚接触OpenBR不久,也试图翻译了一部分openbr官方的文档,总算对openbr有一个大概的认识,下面给一个官方的c++版本的例子——人脸识别。本例程用于比较两张脸的相似程度。程序中给定两幅图像,其中用一副图像分别与另外一个图像和本身进行比较,得到相似度得分。

#include <openbr/openbr_plugin.h>    //引入openbr c++ plugin头文件

//功能函数,用于输出templete中的数据
static void printTemplate(const br::Template &t)
{
    const QPoint firstEye = t.file.get<QPoint>("Affine_0");
    const QPoint secondEye = t.file.get<QPoint>("Affine_1");
    printf("%s eyes: (%d, %d) (%d, %d)\n", qPrintable(t.file.fileName()), firstEye.x(), firstEye.y(), secondEye.x(), secondEye.y());
}

int main(int argc, char *argv[])
{
    br::Context::initialize(argc, argv);    //openbr初始化函数,必须

    //transform 算法参数,这里为FaceRecognition 人脸识别
    QSharedPointer<br::Transform> transform = br::Transform::fromAlgorithm("FaceRecognition");
    QSharedPointer<br::Distance> distance = br::Distance::fromAlgorithm("FaceRecognition");

    // 初始化templates
    br::Template queryA("../data/MEDS/img/S354-01-t10_01.jpg");
    br::Template queryB("../data/MEDS/img/S382-08-t10_01.jpg");
    br::Template target("../data/MEDS/img/S354-02-t10_01.jpg");

    // Enroll templates
    queryA >> *transform;
    queryB >> *transform;
    target >> *transform;

    printTemplate(queryA);
    printTemplate(queryB);
    printTemplate(target);

    // 比较templates
    float comparisonA = distance->compare(target, queryA);
    float comparisonB = distance->compare(target, queryB);

    // Scores range from 0 to 1 and represent match probability
    printf("Genuine match score: %.3f\n", comparisonA);
    printf("Impostor match score: %.3f\n", comparisonB);

    br::Context::finalize();
    return 0;
}

 

转载于:https://my.oschina.net/AARONWB/blog/726247

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值