使用不同的样本多次调用 OpenCV trainEM 函数
Calling OpenCV trainEM function multiple times with different samples
对于说话人识别,我需要使用GMM算法,我选择了OpenCV库来实现。
我为每个说话人都有一个 ml::EM
的向量成员变量:
std::vector< cv::Ptr<cv::ml::EM> > gMFCCVec;
我有一个方法,可以简单地为给定的扬声器调用trainEM
。
void train(size_t speakerID, cv::Mat& samples)
{
gMFCCVec[speakerID]->trainEM(samples);
}
我的问题可以用不同的样本调用trainEM
方法。我有cv::Mat data1
,cv::Mat data2
.如果我打电话像:
trainEM(data1);
trainEM(data2);
ml::EM
将接受data1
和data2
的培训.或者最后一个的训练结果将覆盖第一个(在这种情况下,ml::EM
将只用data2
训练(?
最后一个的训练结果将覆盖第一个。
您可以在实现中看到trainEM
调用setTrainData
:
bool trainEM(InputArray samples,
OutputArray logLikelihoods,
OutputArray labels,
OutputArray probs)
{
Mat samplesMat = samples.getMat();
setTrainData(START_AUTO_STEP, samplesMat, 0, 0, 0, 0);
return doTrain(START_AUTO_STEP, logLikelihoods, labels, probs);
}
setTrainData
称clear()
:
void setTrainData(int startStep, const Mat& samples,
const Mat* probs0,
const Mat* means0,
const std::vector<Mat>* covs0,
const Mat* weights0)
{
clear();
...
clear
只是清除了之前训练的数据:
void clear()
{
trainSamples.release();
...
相关文章:
- 在从Qt调用的Python脚本中导入OpenCV崩溃
- OpenCV 3 Visual Studio 2017 调试,调用堆栈没有.pdb文件
- Unity3D的OpenCV dll调用导致FPS下降
- c++调用opencv相关函数,并且被打包到dll中,c#无法调用它
- 将节点数组(可变长度)转换为常量浮点**以调用opencv.calcHist
- 从 dll 调用 opencv 垫到 Windows 表单,图像出现故障
- 空指针(为缺少的输出数组调用的 create() 在 create,文件 /home/m/OpenCV/modules/
- openCV 库调用不存在的本地路径
- 在 matlab 中调用 opencv 的图像时,无法读取 C++ 中的图像
- OpenCV OpenGLDrawCallback 不会被调用
- 从 Android 中的原生 c++ 文件调用本机 opencv
- 调用PCACompute方法是OpenCV C++
- 在c#应用程序中调用opencv c++代码
- 通过Emgucv调用opencv
- 无法使用大小和类型参数调用 OpenCV 的 Mat::zeros
- 使用不同的样本多次调用 OpenCV trainEM 函数
- 调试断言失败-DirectShow筛选器正在调用OpenCV函数-仅限发布模式
- 调用OpenCV中的imshow()没有创建任何输出
- 在Objective-C中调用OpenCV CvSVMParams
- 调用opencv方法时编译错误