参考代码: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
有人能帮帮我吗
图像分类OpenCV中svm使用报错
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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)模型,并使用训练数据对其进行拟合。
最后,我们使用已经加载的模型来预测一个新的图像。注意,这个例子没有处理异常情况,例如当你试图使用不同的数据集或不同的输入尺寸时。如果你希望处理这种情况,请确保在训练和测试数据上正确地调整数据格式和大小。
解决 无用评论 打赏 举报