only size-1 arrays can be converted to Python scalars
Posted 夏日已末
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了only size-1 arrays can be converted to Python scalars相关的知识,希望对你有一定的参考价值。
python版本:3.6.5
opencv版本:3.2.0
使用的jupyter notebook
源码如下:
import cv2 import numpy as np import matplotlib.pyplot as plt %matplotlib inline # Feature set containing (x,y) values of 25 known/training data trainData = np.random.randint(0,100,(25,2)).astype(np.float32) # Labels each one either Red or Blue with numbers 0 and 1 responses = np.random.randint(0,2,(25,1)).astype(np.float32) # Take Red families and plot them red = trainData[responses.ravel()==0] plt.scatter(red[:,0],red[:,1],80,‘r‘,‘^‘) # Take Blue families and plot them blue = trainData[responses.ravel()==1] plt.scatter(blue[:,0],blue[:,1],80,‘b‘,‘s‘) # plt.show() newcomer = np.random.randint(0,100,(1,2)).astype(np.float32) plt.scatter(newcomer[:,0],newcomer[:,1],80,‘g‘,‘o‘) knn = cv2.ml.KNearest_create() knn.train(trainData,responses) ret, results, neighbours ,dist = knn.findNearest(newcomer, 3) print ("result: ", results," ") print ("neighbours: ", neighbours," ") print ("distance: ", dist) plt.show()
错误如下:
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-21-b1c5cdca5e57> in <module>() 20 knn = cv2.ml.KNearest_create() 21 ---> 22 knn.train(trainData,responses) 23 ret, results, neighbours ,dist = knn.findNearest(newcomer, 3) 24 TypeError: only size-1 arrays can be converted to Python scalars
错误原因:
传递的参数错误
train函数中第二个参数应该是数组的布局方式
应该根据传入数组的形式填cv2.ml.ROW_SAMPLE或者cv2.ml.COL_SAMPLE
例如我的就是
knn.train(trainData,cv2.ml.ROW_SAMPLE,responses)
参考地址:https://stackoverflow.com/questions/33975695/type-error-only-length-1-arrays-can-be-converted-to-python-scalars
以上是关于only size-1 arrays can be converted to Python scalars的主要内容,如果未能解决你的问题,请参考以下文章
TypeError: only integer scalar arrays can be converted to a scalar index
解决问题:only integer scalar arrays can be converted to a scalar index
TypeError: only integer scalar arrays can be converted to a scalar index
python报错:only integer scalar arrays can be converted to a scalar index
Error: Finish can only be called once
Error: CompareBaseObjectsInternal can only be called from the main thread