Type Error: Only length-1 arrays can be converted to Python Scalars
The error message that you are getting:
TypeError: Only length-1 arrays can be converted to Python Scalars
literally means: you have provided an array of more than one element in a place where a single value or an array of a single element was expected.
So one of the arguments passed to call model.train(samples, responses)
requires and scalar... but which?
A look at the latest documentation of KNearest class, allow us to see the signature of the StatsModel.train method:
virtual bool cv::ml::StatModel::train ( InputArray samples, int layout, InputArray responses )
Apparently, a new layout
argument was added. But it's meaning is a little obscure from the documentation.
Without knowledge of the contents of you file, I can't tell if you need to pass ROW_SAMPLE
or COL_SAMPLE
, but armed with that information, I could find a similar question, whose solution was to add cv2.ml.ROW_SAMPLE
as second argument to the train method:
model.train(samples, cv2.ml.ROW_SAMPLE, responses)
TheFallenOne
Part time web application developer, Decent knowledge of C#,.NET and SQL. Finding my way through python for a class assignment
Updated on June 05, 2022Comments
-
TheFallenOne about 2 years
I am a beginner to openCV and am trying to analyse an existing code for a sudoku solver. There is this section of code which throws an error.
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)
The error is as follows
Type Error: Only length-1 arrays can be converted to Python Scalars
.The complete traceback is as below:
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
Any idea as to what the issue is?