Python 将OpenCV图像加载到Scikit学习

Python 将OpenCV图像加载到Scikit学习,python,opencv,scikit-learn,Python,Opencv,Scikit Learn,我正在编写一个机器学习脚本,用来拍照和贴标签。我将数据集放在一个文件夹中,并将它们添加到数组中,然后为标签创建另一个数组。当我尝试使用svm.fit时,会出现以下错误: File "scikit.py", line 43, in <module> clf.fit(arrayimg, arraylabel) File "/home/mkmeral/.local/lib/python2.7/site-packages/sklearn/svm/base.py", line 15

我正在编写一个机器学习脚本,用来拍照和贴标签。我将数据集放在一个文件夹中,并将它们添加到数组中,然后为标签创建另一个数组。当我尝试使用svm.fit时,会出现以下错误:

File "scikit.py", line 43, in <module>
    clf.fit(arrayimg, arraylabel)
  File "/home/mkmeral/.local/lib/python2.7/site-packages/sklearn/svm/base.py", line 151, in fit
    X, y = check_X_y(X, y, dtype=np.float64, order='C', accept_sparse='csr')
  File "/home/mkmeral/.local/lib/python2.7/site-packages/sklearn/utils/validation.py", line 521, in check_X_y
    ensure_min_features, warn_on_dtype, estimator)
  File "/home/mkmeral/.local/lib/python2.7/site-packages/sklearn/utils/validation.py", line 405, in check_array
    % (array.ndim, estimator_name))
ValueError: Found array with dim 3. Estimator expected <= 2.
文件“scikit.py”,第43行,在
clf.fit(arrayimg,arraylabel)
文件“/home/mkmeral/.local/lib/python2.7/site-packages/sklearn/svm/base.py”,第151行,适合
十、 y=check_X_y(X,y,dtype=np.float64,order='C',accept_sparse='csr')
文件“/home/mkmeral/.local/lib/python2.7/site packages/sklearn/utils/validation.py”,第521行,检查
确保\u最小\u功能,警告\u数据类型,估计器)
check_数组中的文件“/home/mkmeral/.local/lib/python2.7/site packages/sklearn/utils/validation.py”,第405行
%(array.ndim,估计器名称))

ValueError:找到具有dim 3的数组。Estimator expected我不是图像处理方面的专家,但我猜您的
getImage
函数会为每个图像返回一个2d数组。其中as
sckit learn
将为每个训练实例提供1d数组。假设您所有的图像大小相同,那么下面的方法应该可以工作

def getImage():
    retval, im = camera.read()
    gray_image = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
    return gray_image.flatten()
这会将每个图像转换为1d阵列。如果图像大小不尽相同,则需要执行一些图像处理步骤,如调整大小或向下采样

def getImage():
    retval, im = camera.read()
    gray_image = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
    return gray_image.flatten()