【问题标题】:OpenCV throwing error. Trying to use a Random Forest ModelOpenCV 抛出错误。尝试使用随机森林模型
【发布时间】:2016-07-20 15:27:57
【问题描述】:

所以我正在尝试使用 opencv 创建回归模型。

我正在使用它,但我不知道出了什么问题:http://pastebin.com/9vEpn4GC

它总是把它扔掉:

OpenCV 错误:cvPreprocessVarType,文件........\opencv\modules\ml\src\inner_functions.cpp,第 519 行中不支持的格式或格式组合(类型掩码必须是 8uC1 或 8sC1 数组) Traceback(最近一次调用最后一次):

a.train(save_all[features[i]], cv2.CV_ROW_SAMPLE, Y[:][:, i], params=params, varType=var_types) cv2.error: ........\opencv\modules\ml\src\inner_functions.cpp:519: error: (-210) type mask must be 8uC1 or 8sC1 array in function cvPreprocessVarType

我已尝试搜索此错误,但没有很多结果。我猜它涉及 var_types 声明。

【问题讨论】:

  • var_types = np.array([cv2.CV_VAR_NUMERICAL] * var_n + [cv2.CV_VAR_ORDERED], np.uint8) 怎么样?这是一个枚举值列表,将其作为浮点数是没有意义的。
  • 并且错误消息特别指出“类型掩码必须是 8uC1 或 8sC1 数组”,我认为这意味着它需要无符号或有符号的 8 位值。

标签: python opencv machine-learning regression random-forest


【解决方案1】:

var_types 数组是一个枚举值列表。正如错误消息提示的那样,元素的数据类型应该是字节,而不是浮点数。

以下应该可以解决问题:

var_types = np.array([cv2.CV_VAR_NUMERICAL] * var_n + [cv2.CV_VAR_ORDERED], np.uint8)

【讨论】:

  • 是的,就是这样,第一次使用opencv。现在我得到:OpenCV 错误:cvPreprocessVarType 中的参数错误(类型掩码必须为 + 1 大小)
  • @AndréCosta 在你打电话给火车之前,save_all[features[i]] 的形状是什么? var_types 的形状是什么?我没有数据文件可以尝试...
  • 这是我的 var_n 错误的问题,因为我使用的是我的第一个输入形状,而没有将其处理为更小的矩阵。我已经手动分配了 var_n,现在一切正常 :) 非常感谢您的帮助!
猜你喜欢
  • 2013-12-03
  • 2021-07-01
  • 2017-10-20
  • 1970-01-01
  • 2016-01-24
  • 2011-11-28
  • 2020-10-17
  • 1970-01-01
  • 2019-07-10
相关资源
最近更新 更多