小编tuc*_*uck的帖子

OpenCV SVM在火车上抛出异常,"坏参数(只有一个类)"

我坚持这个.

我试图通过OpenCV功能2d框架进行一些对象分类,但是在训练我的SVM时遇到了麻烦.

我能够使用BowKMeansTrainer提取词汇表并对它们进行聚类,但在我从训练数据中提取要添加到训练器并运行SVM.train方法之后,我得到以下异常.

OpenCV Error: Bad argument (There is only a single class) in     cvPreprocessCategoricalResponses, file /home/tbu/prog/OpenCV-2.4.2/modules/ml/src    /inner_functions.cpp, line 729
terminate called after throwing an instance of 'cv::Exception'
 what():  /home/tbuchy/prog/OpenCV-2.4.2/modules/ml/src/inner_functions.cpp:729: error:     (-5) There is only a single class in function cvPreprocessCategoricalResponses
Run Code Online (Sandbox Code Playgroud)

我尝试使用不同的训练器来修改字典大小,确保我的矩阵类型是正确的(尽我所能,仍然是opencv的新手).

有没有看到这个错误或有任何关于如何解决它的见解?

我的代码看起来像这样:

trainingPaths = getFilePaths();
extractTrainingVocab(trainingPaths);
cout<<"Clustering..."<<endl;
Mat dictionary = bowTrainer.cluster();
bowDE.setVocabulary(dictionary);


Mat trainingData(0, dictionarySize, CV_32FC1);
Mat labels(0, 1, CV_32FC1);
extractBOWDescriptor(trainingPaths, trainingData, labels);


//making the classifier
CvSVM classifier;
CvSVMParams params;
params.svm_type    = CvSVM::C_SVC;
params.kernel_type = CvSVM::LINEAR;
params.term_crit   = …
Run Code Online (Sandbox Code Playgroud)

c++ opencv computer-vision surf sift

5
推荐指数
1
解决办法
4335
查看次数

是否可以使用dynamic_cast进行模板类型检查?

    template <class T> void checkObject(T genericObject)
    {
      MyClassA* a = dynamic_cast<MyClassA*>(genericObject);
      if (a != NULL)
      {
        //we know it is of type MyClassA
      }
      MyClassB* b = dynamic_cast<MyClassB*>(genericObject);
      if (b != NULL)
      {
        //we know it is of type MyClassB
      }
    }
Run Code Online (Sandbox Code Playgroud)

这样的事情可能吗?我们有模板类型,但我们想知道它的实际类型?

c++

5
推荐指数
1
解决办法
4998
查看次数

在python中将数组的字符串表示形式转换为实际数组

嗨,通过网络做一些事情,并想知道是否有任何方式将python数组转换为字符串回到python数组..例如

x = "[1,2,3,4]"
Run Code Online (Sandbox Code Playgroud)

将x转换为

x_array = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

奖金,如果它也可以适用于多块的多维数组!

python arrays numpy type-conversion

1
推荐指数
1
解决办法
1189
查看次数

看一下switch语句里面(双重打破)

有点傻控制流程问题:

基本上我有类似以下的东西,

switch(r){
case(0):
  while (x != TRUE) {
     yield();
     break;
  }
  do_important_work();
  break;
}
Run Code Online (Sandbox Code Playgroud)

如果满足条件(即如果x!= TRUE)我希望这个线程只是屈服,并在代码中的这个位置停止执行(即我做一个内核级上下文切换),并允许其他一些进程运行,以后再试一次.问题是while循环内部的中断只是打破了while循环,而不是整个switch语句.我真正想要的是执行产量,然后突破并允许另一个上下文切换发生.

这有意义吗?这是迟到的方式,我不能为我的生活找到解决方案.

任何帮助将不胜感激.

c operating-system

1
推荐指数
1
解决办法
89
查看次数