import cv2
import numpy as np
import matplotlib.pyplot as plt
# 训练的点数
train_pts = 30
# 创建测试的数据点,2类
# 以(-1.5, -1.5)为中心
rand1 = np.ones((train_pts,2)) * (-2) + np.random.rand(train_pts, 2)
print('rand1:')
print(rand1)
# 以(1.5, 1.5)为中心
rand2 = np.ones((train_pts,2)) + np.random.rand(train_pts, 2)
print('rand2:')
print(rand2)
# 合并随机点,得到训练数据
train_data = np.vstack((rand1, rand2))
train_data = np.array(train_data, dtype='float32')
train_label = np.vstack( (np.zeros((train_pts,1), dtype='int32'), np.ones((train_pts,1), dtype='int32')))
# 显示训练数据
plt.figure(1)
plt.plot(rand1[:,0], rand1[:,1], 'go')
plt.plot(rand2[:,0], rand2[:,1], 'ro')
plt.show()
# 创建分类器
svm = cv2.ml.SVM_create()
svm.setType(cv2.ml.SVM_C_SVC) # SVM类型
svm.setKernel(cv2.ml.SVM_LINEAR) # 使用线性核
svm.setC(1.0)
# 训练
ret = svm.train(train_data, cv2.ml.ROW_SAMPLE, train_label)
# 测试数据,20个点[-2,2]
pt = np.array(np.random.rand(20,2) * 4 - 2, dtype='float32')
(ret, res) = svm.predict(pt)
print(
(openCV 十)ML_SVM
最新推荐文章于 2025-06-02 19:47:25 发布

本文深入探讨了如何使用OpenCV库中的机器学习模块(ML)实现支持向量机(SVM)。通过实例讲解了SVM的训练过程、参数调整以及在图像分类中的应用,为读者提供了理解SVM在计算机视觉领域的实践指南。
最低0.47元/天 解锁文章
1920

被折叠的 条评论
为什么被折叠?



