opencv的svm图片识别代码实现
时间: 2024-10-09 21:06:02 浏览: 42
OpenCV(Open Source Computer Vision Library)是一个强大的计算机视觉库,它提供了许多机器学习算法,包括支持向量机(SVM)。以下是使用OpenCV进行简单图像分类,尤其是基于SVM的步骤:
```python
# 首先安装必要的库,如numpy、opencv-python等
import cv2
import numpy as np
# 定义数据集,假设我们已经有了两类训练图像的数据
train_data = []
train_labels = [] # 类别标签,例如[0] for class 0, [1] for class 1
# 加载并预处理训练图像,将其转换成特征向量
for img_path, label in train_data_set:
img = cv2.imread(img_path)
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转为灰度图
features = hog(gray_img, orientations=9, pixels_per_cell=(8, 8), cells_per_block=(2, 2)) # HOG特征提取
train_data.append(features)
train_labels.append(label)
# 将数据归一化
train_data = np.array(train_data, dtype=np.float32)
train_labels = np.array(train_labels)
# 分割数据集(通常会做交叉验证)
X_train, X_test, y_train, y_test = train_test_split(train_data, train_labels, test_size=0.2)
# 使用OpenCV的SVM模块训练模型
svm = cv2.ml.SVM_create()
svm.setType(cv2.ml.SVM_C_SVC) # 或者 cv2.ml.SVM_LINEAR等
svm.setKernel(cv2.ml.SVM_RBF) # 核函数,这里选择径向基函数(RBF)
svm.setGamma(0.5) # SVM参数,对RBF影响较大
svm.setC(1.0) # SVM参数,正则化强度
svm.train(X_train, cv2.ml.ROW_SAMPLE, y_train)
# 测试阶段
test_data = ... # 加载测试图像并提取特征
predictions = svm.predict(test_data)
阅读全文