qq_40707462 2019-05-22 14:14 采纳率: 0%
浏览 674

图像分类OpenCV中svm使用报错

参考代码:https://blog.csdn.net/xq920831/article/details/85052318
第123行
用我自己的图片集的时候会报错:
cv2.error: OpenCV(3.4.1) C:\projects\opencv-python\opencv\modules\ml\src\data.cpp:298: error: (-215) (layout == ROW_SAMPLE && responses.rows == nsamples) || (layout == COL_SAMPLE && responses.cols == nsamples) in function cv::ml::TrainDataImpl::setData
有人能帮帮我吗

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-09 18:20
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在OpenCV中,当尝试对图像进行分类时,如果数据集的形状不匹配(例如,如果数据集是列样本而不是行样本),或者如果输入的数据集大小与预期的大小不同,可能会遇到错误。以下是一个可能的原因和解决方案的例子:

    from cv2 import imread, imwrite, imencode, imdecode, resize
    import numpy as np
    import matplotlib.pyplot as plt
    
    # 加载你的图像
    img = imread('path_to_your_image.jpg')
    
    # 将图像转换为灰度
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    # 计算特征向量
    features = extract_features(gray)
    
    # 创建一个SVM模型
    clf = svm.SVC()
    
    # 使用训练数据拟合模型
    X_train, y_train = features, labels
    clf.fit(X_train, y_train)
    
    # 保存模型到文件
    filename = 'your_model_file.sav'
    pickle.dump(clf, open(filename, 'wb'))
    
    # 加载模型并预测新图像
    new_img = imread('path_to_new_image.jpg')
    new_gray = cv2.cvtColor(new_img, cv2.COLOR_BGR2GRAY)
    new_features = extract_features(new_gray)
    predicted_label = clf.predict(new_features.reshape(1, -1))
    
    print(predicted_label)
    

    在这个例子中,我们首先加载了图像,并将其转换为灰度图像。然后,我们计算了图像中的特征向量。接着,我们创建了一个支持向量机(SVM)模型,并使用训练数据对其进行拟合。

    最后,我们使用已经加载的模型来预测一个新的图像。注意,这个例子没有处理异常情况,例如当你试图使用不同的数据集或不同的输入尺寸时。如果你希望处理这种情况,请确保在训练和测试数据上正确地调整数据格式和大小。

    评论

报告相同问题?