我是openCV的初学者,正在尝试分析数独求解器的现有代码。有这段代码会引发错误。
samples = np.float32(np.loadtxt('feature_vector_pixels.data'))
responses = np.float32(np.loadtxt('samples_pixels.data'))
model = cv2.ml.KNearest_create()
model.train(samples, responses)
错误如下Type Error: Only length-1 arrays can be converted to Python Scalars
。
完整的回溯如下:
C:\Study stuff\FinalProject>c:\Python27\python.exe Sudoku.py
Traceback (most recent call last):
File "Sudoku.py", line 15, in <module>
model.train(samples, responses)
TypeError: only length-1 arrays can be converted to Python scalars
关于这个问题有什么想法吗?
您收到的错误消息:
TypeError: Only length-1 arrays can be converted to Python Scalars
字面意思是:您在期望单个值或单个元素数组的位置提供了一个以上元素的数组。
所以传递给call的参数之一是model.train(samples, responses)
require和标量...但是,哪一个呢?
看看KNearest类的最新文档,可以让我们看到StatsModel.train方法的签名:
虚拟布尔cv :: ml :: StatModel :: train(InputArray示例,int布局,InputArray响应)
显然,增加了一个新的layout
论点。但这对文档的含义有些晦涩。
在不了解文件内容的情况下,我无法确定您是否需要传递ROW_SAMPLE
或COL_SAMPLE
,但是有了这些信息,我可以找到一个类似的问题,其解决方案是将cv2.ml.ROW_SAMPLE
第二个参数添加到train方法中:
model.train(samples, cv2.ml.ROW_SAMPLE, responses)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句