本项目使用libsvm, 进行扑克牌识别, 语言使用python, 项目中已经集成了libsvm Libsvm 在 http://www.csie.ntu.edu.tw/~cjlin/libsvm 可以获取到。 目录 ================= - 初步运行 - 特征获取 - 创建训练集合 - 结果执行 初步运行 =========== 运行python python/feature_train.py 得到 feature/train.txt 运行python python/feature_test.py 得到 feature/test.txt 运行python python/test.py 输出测试结果 optimization finished, #iter = 1 nu = 0.200000 obj = -1.000000, rho = 0.000000 nSV = 2, nBSV = 0 Total nSV = 12 Accuracy = 28.5714% (2/7) (classification) 准确率为28.5714%,当然这个准确率让人失望 特征获取(python/jpgtodata.py) ============================ 项目目前采用的特征获取方法是以x和y轴的投影 例如train_sample/1j.jpg,先将图片压缩成75*100的图片。然后进行二值化处理 以x轴,y轴遍历, 获得如下 x轴的投影矩阵为 [ 0. 16. 8. 7. 8. 15. 13. 17. 8. 4. 60. 33. 39. 36. 42. 40. 37. 37. 51. 48. 40. 42. 31. 40. 35. 33. 34. 31. 34. 35. 35. 42. 42. 48. 48. 38. 43. 48. 44. 43. 45. 48. 45. 40. 37. 48. 33. 32. 32. 31. 36. 40. 38. 36. 41. 49. 42. 47. 37. 41. 33. 42. 31. 33. 33. 27. 40. 4. 10. 10. 8. 6. 5. 6. 4.] y轴的投影矩阵为 [ 0. 0. 1. 4. 4. 3. 6. 7. 23. 19. 31. 24. 33. 21. 17. 15. 23. 19. 25. 28. 31. 27. 28. 12. 20. 16. 16. 26. 31. 37. 32. 34. 36. 41. 29. 28. 32. 29. 37. 24. 35. 29. 34. 30. 30. 27. 28. 38. 34. 42. 25. 31. 28. 41. 20. 34. 28. 28. 29. 35. 39. 36. 33. 32. 27. 34. 28. 19. 30. 29. 39. 26. 31. 30. 25. 28. 12. 12. 14. 12. 20. 32. 28. 28. 26. 23. 14. 16. 15. 24. 30. 22. 22. 24. 28. 4. 1. 2. 4. 1.] 水平合并x, y轴投影矩阵,形成175长的一维矩阵 运行python python/feature_train.py 得到 feature/train.txt 第一位为类别分别是 0: 黑桃J 1: 红桃J 2: 草花J 3: 方块J 4: 黑桃Q 5: 红桃Q 6: 草花Q 7: 方块Q 8: 黑桃K 9: 红桃K 10: 草花K 11: 方块K 后面175位为175长的特征矩阵 格式为[索引值:数值](libsvm规定格式) 同理运行python python/feature_test.py 得到 feature/test.txt 结果执行 =================== 执行python/test.py svm_read_problem 为读取特征文件(feature/train.txt, feature/test.txt) svm_train 训练样本, 返回结果为分类器,可以用svm_save_model和svm_load_model保存和读取。 svm_predict 测试样本,也可以用来验证新来样本,新来样本的txt文件的第一位分类可以随便填写或者填写不存在的分类都可 结果 optimization finished, #iter = 1 nu = 0.200000 obj = -1.000000, rho = 0.000000 nSV = 2, nBSV = 0 Total nSV = 12 Accuracy = 28.5714% (2/7) (classification)