如何使用带有面部特征的 openCV 训练支持向量机(svm)分类器?

2024-03-27

我想使用svm分类器进行面部表情检测。我知道 opencv 有一个 svm api,但我不知道训练分类器的输入应该是什么。到目前为止我读了很多论文,他们都说在面部特征检测之后训练分类器。

到目前为止我所做的,

  1. 人脸检测,
  2. 每帧计算16个面部点。下面是面部特征检测的输出![输入图像描述
  3. A vector which holds the features points pixel addresshere

注意:我知道如何仅使用正图像和负图像训练 SVM,我看到了这段代码here https://github.com/MasteringOpenCV/code/blob/master/Chapter5_NumberPlateRecognition/trainSVM.cpp,但是我不知道如何将面部特征信息与它结合起来。

任何人都可以帮我开始用 svm 进行分类吗?

A。训练分类器的样本输入应该是什么?

b.如何用这个面部特征点训练分类器?

Regards,


opencv 中的机器学习算法都具有类似的界面。为了训练它,你需要传递一个 NxM 特征矩阵(N 行,每个特征一行,长度为 M)和一个带有类标签的 Nx1 矩阵。像这样:

//traindata      //trainlabels

f e a t u r e    1 
f e a t u r e    -1
f e a t u r e    1
f e a t u r e    1
f e a t u r e    -1

对于预测,您以相同的方式填充 1 行 Mat,它将返回预测的标签

所以,假设你的 16 个面部点存储在一个向量中,你会喜欢:

Mat trainData; // start empty
Mat labels;

for all facial_point_vecs:
{
    for( size_t i=0; i<16; i++ )
    {
        trainData.push_back(point[i]);
    }
    labels.push_back(label); // 1 or -1
}
// now here comes the magic:
// reshape it, so it has N rows, each being a flat float, x,y,x,y,x,y,x,y... 32 element array
trainData = trainData.reshape(1, 16*2); // numpoints*2 for x,y

// we have to convert to float:
trainData.convertTo(trainData,CV_32F);

SVM svm; // params omitted for simplicity (but that's where the *real* work starts..)
svm.train( trainData, labels );


//later predict:
vector<Point> points;
Mat testData = Mat(points).reshape(1,32); // flattened to 1 row
testData.convertTo(testData ,CV_32F);
float p = svm.predict( testData );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用带有面部特征的 openCV 训练支持向量机(svm)分类器? 的相关文章

  • 如何在C++中生成非常大的随机数

    我想使用 C 生成 0 2 64 范围内的非常大的随机数 我已经使用了 rand 函数 但它没有生成非常大的数字 有人可以帮忙吗 使用c 11 使用标准c 11的随机库 http en cppreference com w cpp nume
  • 什么定义了类型的大小?

    ISO C 标准规定 sizeof char lt sizeof short lt sizeof int lt sizeof long 我在 BIT Linux mint 19 1 上使用 GCC 8 大小为long int is 8 我正
  • 我的 std::hash for std::tuples...有什么改进吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有些人可能已经注意到 std hash 不支持元组 所以我添加了一个重载 它看起来比我到目前为止看到的解决方案 更好 有人有进一步减少这段代码的
  • Visual Studios 2015 中的“恢复 NuGet 包”没有执行任何操作

    我将解决方案从 SVN 拉入 Visual Studios 2015 代码中的一些 使用 引用出现错误 因此我尝试在右键单击 解决方案 中的解决方案时运行 恢复 NuGet 包 选项探索者 这没有任何作用 我必须手动进入 nuget 管理器
  • 无法使用c#更改视频捕获分辨率

    我正在尝试使用 C 中的 DirectShowNet 更改默认网络摄像头分辨率 据我所知 我需要通过调用 windows win32 api dll 中内置的 VideoInfoHeader 类来更改它以进行 avi 捕获 我有来自 Dir
  • 更新 Azure Blob 上的 LastModified

    我正在移植代码以使用 C 中的 Azure 存储 SDK 传统上 我称其为更新修改文件的上次写入 修改时间 File SetLastWriteTimeUtc fileName lastWriteTimeUtc 要更新 blob 的上次修改时
  • 如何使用c#从数据桶中获取所有文档?

    如何获取数据桶中的所有文档 我尝试过一个示例 但我只能获得一个特定的文档 这是我的代码 CouchbaseClient oclient oclient new CouchbaseClient vwspace data bucket name
  • 选择initializer_list迭代器定义

    Why std initializer list
  • 节点*链表中的下一个

    我是数据结构和算法的新手 我遇到了以下代码 typedef struct node int data node next 谁能告诉我为什么我们要声明节点 next next 不能声明为 int next 吗 因为你希望能够做到n gt ne
  • 冒号在c中起什么作用?

    我在课堂上得到了这个例子 但我不确定它的作用 我知道冒号添加了一个位字段 但我仍然不确定这个问题 a b gt 0 3 1 运算符称为条件运算符 If b值为 gt 0 价值3被分配给a否则值1被分配给a 以 Kernighan Ritch
  • Windows 上本机 C++ 应用程序中的自动死代码检测?

    背景 我有一个用原生 C 编写的应用程序 花了几年的时间 大约有 60 KLOC 有很多函数和类已经死了 可能有 10 15 就像下面提出的类似的基于 Unix 的问题 我们最近开始对所有新代码进行单元测试 并尽可能将其应用于修改后的代码
  • 使用 cmake 将两种解决方案合二为一

    我有两个单独的 Visual Studio 2013 解决方案 我想将它们迁移到一个解决方案中 因为第一个解决方案 使用 Qt 充当第二个解决方案的 GUI 最后 我希望有一个结构如下的单一解决方案 Solution All Build P
  • 调试错误:在 vc++ 项目中使用 COM 时发生 所需的运行时?

    我为我的工作创建了一个 COM 组件 我也注册了该组件 在我的系统上 我有两个虚拟机工作站 在我的第一个工作站中 它运行良好 在我的第二个工作站中 它显示一个包含消息的错误框该程序需要一段时间并以不寻常的方式关闭 请联系应用程序管理员 我认
  • 意外的 const 引用行为

    include
  • 实体框架读取列但阻止其更新

    给定一个数据库表 其中有一列包含历史数据但不再填充 实体框架中是否有一种方法可以读取该列 但在使用相同的模型对象时防止它被更新 例如我有一个对象 public class MyObject public string CurrentData
  • 展开 std::reference_wrapper 的成本

    Given include
  • Unity - 在生成时获取随机颜色

    我有一个小问题 我想在我的场景中生成四边形 它们都应该有红色或绿色作为材质 但 Random Range 函数只能是 int 我该如何解决它 void SpawningSquadsRnd rndColor 0 Color red rndCo
  • 使用C标准数学库精确计算标准正态分布的CDF

    标准 C 数学库不提供计算标准正态分布 CDF 的函数 normcdf 然而 它确实提供了密切相关的函数 误差函数 erf 和互补误差函数 erfc 计算 CDF 的最快方法通常是通过误差函数 使用预定义常量 M SQRT1 2 来表示 d
  • 如何通过API退出Win32应用程序?

    我有一个使用 Win32 API 编写的 C Win32 应用程序 我希望强制它在其中一个函数中退出 有没有类似的东西Exit or Destroy or Abort 类似的东西会终止它吗 哎呀呀呀呀呀呀 不要做任何这些事情 exit 和
  • 如何根据当前日期时间发现财政年度?

    我需要基于当前或今天的日期时间的财政年度 假设我们认为今天的日期是10 April 2011 那么我需要输出为Financial Year 2012在某些情况下 我需要以短格式显示相同的输出FY12 我想以两种方式显示 在我们的要求中 考虑

随机推荐

  • qt/c++ 动态命名变量

    我正在为我的一项大学作业在 Qt 中开发一个 html 编辑器 并且我在某些变量的命名方面遇到了问题 问题是这样的 当用户决定加载他们的 项目 时 程序会迭代该文件夹并查找其中有多少个 html 文件 然后它会创建要显示的选项卡 我有一个自
  • Symfony2 Assetic 路由和资源错误

    我有一个模板 例如index html php 我在其中使用 php assetic 加载器 如下所示 如果我对模板文件进行任何更改 我会得到路线 assetic 2b431f4 不存在 如果我改变 assetic use controll
  • C 中逐个字符读取文件

    我正在用 C 语言编写 BF 解释器 但在读取文件时遇到了问题 我以前用过scanf为了读取第一个字符串 但是你的 BF 代码中不能有空格或注释 现在这就是我所拥有的 char readFile char fileName FILE fil
  • EditText 随选择缩放

    我有一个EditText我想缩放它并滚动setScaleX setScaleY它工作正常 文本正在正确的位置进行编辑 但是当我尝试选择文本时 它会将选择手柄绘制到位置 就像文本未缩放时一样 我们都知道bug https code googl
  • 对公司名称的 DataFrame 进行非规范化 [第 1 部分]

    我有一个公司名称的 Pandas DataFrame 其结构如下 import numpy as np import pandas as pd df pd DataFrame name Nitron Pulset Rotaxi postal
  • 我如何知道创建项目时使用的是哪个版本的 Delphi

    如果我有 Delphi 项目的完整源代码 我如何知道使用哪个版本 即 Delphi 5 Delphi 7 Delphi 2010 等 来创建它 而无需在 Delphi 中打开它 我有许多可以追溯到 Delphi 6 时代的项目 我想对它们进
  • OpenId Connect 与 wso2 仅返回子声明

    当我询问用户 WSO2 的信息时 响应仅包含他的子信息 Request GET https srv wso2 domain com 9443 oauth2 userinfo schema openid Request headers Acc
  • AngularJS - 涉及异步数据的依赖注入

    我想让当前登录的用户 ID 和用户名可供我的 Angular 指令使用 我创建了一个 API 端点来检索此信息 以及一些其他信息 问题是 API 调用是异步的 var url baseUrl api sessions http get ur
  • 没有指定 dataType 的自定义 ajaxTransport 函数不会触发(根本!)

    我一直在尝试设置jQuery 的自定义 ajaxTransports http api jquery com extending ajax Transports在我们的产品的某些场景下缩短某些工作流程 然而 我在让这些运输受到尊重方面取得了
  • 将 CSV 文件转换为 Java - 向后复制

    我之前问过一个关于在java中将CSV文件转换为二维数组的问题 我完全重写了我的代码 几乎要重新编写了 我现在遇到的唯一问题是它正在向后打印 换句话说 列打印在行应该打印的位置 反之亦然 这是我的代码 int board new int 2
  • D 中是否有相当于 C++ 的 Future/Promise ?

    D 世界中是否存在 C 世界中的未来 承诺等价物 当然有标准并行度 http dlang org phobos std parallelism html但它并不完全具有承诺 未来组合的功能 没有相当于获取未来或设置结果或异常的功能 您也不能
  • Pytorch:了解 nn.Module 类内部如何工作

    一般来说 一个nn Module可以由子类继承 如下所示 def init weights m if type m nn Linear torch nn init xavier uniform m weight class LinearRe
  • 如何使用 jQuery 从 iframe 调用父页面上的函数?

    我有一个上传表单 可以发布到隐藏的 iframe 我试图从 iframe 调用父页面上的函数 但收到错误 top stopUpload 不是函数 这样做的正确方法是什么 父页面 document ready function documen
  • 检测两个图像之间的像素碰撞/重叠

    我有两个 UIImageView 其中包含具有某些透明区域的图像 有什么方法可以检查两个图像之间的非透明区域是否发生碰撞 Thanks 更新 这就是我到目前为止所拥有的 不幸的是它仍然不起作用 但我不明白为什么 if CGRectInter
  • 在什么情况下会调用类型到自身的转换运算符?

    考虑一个类型bar其中具有用户定义的类型引用转换运算符bar struct bar operator bar operator const bar const 何时应用这些转换 此外 如果这些运算符是deleted 这两个功能有什么有趣的用
  • 释放宝石时 rake 释放挂起

    我正在尝试将我的第一个宝石发布到 Ruby Gems 该宝石在本地运行良好 我使用以下方式释放它 rake release 这在控制台中给了我这个 example gem 0 0 3 built to pkg example gem 0 0
  • 命名空间、argparse 和用法

    这确实是几个问题 argparse 使用名称空间而不是字典有原因吗 假设我有一个班级 init self init method args The init method参数告诉 init function 我想用哪种方式初始化类 而arg
  • 用 java 中的 Apache Tar 保存结构的目录

    我怎么能够tar一个目录并使用以下命令保留目录结构org apache commons compress图书馆 通过我在下面所做的事情 我只是得到一个所有东西都被压平的包裹 Thanks 这是我一直在尝试的方法 但它不起作用 public
  • 为什么 macOS 会杀死由 clang 创建的静态可执行文件?

    我有一个用于 m1 arm cpu 的最小 c 程序 返回 42 void start asm mov x0 42 asm mov x16 1 asm svc 0x80 此代码在告诉 clang 使用 start 符号后进行编译并返回正确的
  • 如何使用带有面部特征的 openCV 训练支持向量机(svm)分类器?

    我想使用svm分类器进行面部表情检测 我知道 opencv 有一个 svm api 但我不知道训练分类器的输入应该是什么 到目前为止我读了很多论文 他们都说在面部特征检测之后训练分类器 到目前为止我所做的 人脸检测 每帧计算16个面部点 下