-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSVM3.py
More file actions
55 lines (50 loc) · 2.06 KB
/
SVM3.py
File metadata and controls
55 lines (50 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import os
import sys
import os.path
sys.path.append('C:\libsvm-3.21\python')
from PIL import Image,ImageEnhance,ImageFilter
from svmutil import *
def GetFeature(imgCropImg,nImgHeight,nImgWidth):
PixelCountList = []
for y in range(nImgHeight):
CountX = 0
for x in range(nImgWidth):
if imgCropImg.getpixel((x, y)) == 0: # 黑色点
CountX += 1
PixelCountList.append(CountX)
for x in range(nImgWidth):
CountY = 0
for y in range(nImgHeight):
if imgCropImg.getpixel((x, y)) == 0: # 黑色点
CountY += 1
PixelCountList.append(CountY)
return PixelCountList
def OutPutVectorData(strID,strMaterialDir,strOutPath):
for ParentPath,DirNames,FileNames in os.walk(strMaterialDir):
with open(strOutPath, 'a') as fpFea:
for fp in FileNames:
strFullPath = os.path.join(ParentPath,fp) # 图片文件路径信息
imgOriImg = Image.open(strFullPath) # 打开图片
FeatureList = GetFeature(imgOriImg,14,13) # 生成特征值
strFeature = strID+' '
nCount = 1
for i in FeatureList:
strFeature = '%s%d:%d ' % (strFeature,nCount,i)
nCount+=1
fpFea.write(strFeature+'\n')
fpFea.flush()
fpFea.close()
def TrainSvmModel(strProblemPath,strModelPath):
Y, X = svm_read_problem(strProblemPath)
Model = svm_train(Y,X)
svm_save_model(strModelPath, Model)
def SvmModelTest(strProblemPath,strModelPath):
TestY, TestX = svm_read_problem(strProblemPath)
Model = svm_load_model(strModelPath)
pLabel, pAcc, pVal = svm_predict(TestY, TestX, Model)#p_label即为识别的结果
return pLabel
for i in range(0,10):
strID = '%d' % i
OutPutVectorData(strID,'C:/tencent/step_3/'+strID,'C:/tencent/step_4/Vector.txt')
for j in range(97,123):
OutPutVectorData('%d'%j,'C:/tencent/step_3/'+chr(j),'C:/tencent/step_4/Vector.txt')