错误:错误:(-215:断言失败)函数'cv :: ml :: SVMImpl :: predict'中的samples.cols == var_count && samples.type()== 5

时间:2019-08-29 08:45:14

标签: python image-processing svm opencv3.0

我想预测并提取“眼部/眼部区域”

我在眼睛(正图像)和其他(负图像)数据集上训练了我的SVM 图像具有(眼睛)且其他图像具有(0)时预测良好(1)

现在,我添加(haarcascde_eye.xml)文件以检测眼睛并获得预期结果,我想使用我自己的Trained SVM.xml文件,但该文件不断显示此错误

如果我删除此行代码

left join example.table2 as tb2 on tb1.field1 = Substring(tb2.field2,16,1)

代码的其余部分工作正常。我搜索与该问题相关的每个链接,对于以正确的方式指导我将不胜感激。

培训代码

res = svm.predict(sample)
print (res)

测试代码/预测代码

import cv2
import glob
import numpy as np

samples = []
labels = []    

i=0
# Get positive samples
for filename in glob.glob("C:\\Users\\ATech\\AppData\\Local\\Programs\\Python\\Python37-32\\interface\\images\\iphone_day_light_short\\eyes\\*.png"):
    img = cv2.imread(filename, 1)
    #img = cv2.resize(img, (240, 160))
    hog = cv2.HOGDescriptor()
    hist = hog.compute(img)
    samples.append(hist)
    labels.append(1)
    i+=1
    if i > 50:
        break
print(hist)


# Get negative samples
for file in glob.glob("C:\\Users\\ATech\\AppData\\Local\\Programs\\Python\\Python37-32\\interface\\images\\iphone_day_light_short\\ng_images\\*.png"):
    img = cv2.imread(
        file, 1)
    img = cv2.resize(img, (240, 160))
    hog = cv2.HOGDescriptor()
    hist = hog.compute(img)

    samples.append(hist)
    labels.append(0)

print(hist)
print('done****')
# Convert objects to Numpy Objects
samples = np.float32(samples)
labels = np.array(labels)


# Shuffle Samples
rand = np.random.RandomState(321)
shuffle = rand.permutation(len(samples))
samples = samples[shuffle]
labels = labels[shuffle]    

# Create SVM classifier
svm = cv2.ml.SVM_create()
svm.setType(cv2.ml.SVM_C_SVC)
svm.setKernel(cv2.ml.SVM_LINEAR) # cv2.ml.SVM_LINEAR
# svm.setDegree(0.0)
svm.setGamma(5.383)
# svm.setCoef0(0.0)
svm.setC(2.67)
# svm.setNu(0.0)
# svm.setP(0.0)
# svm.setClassWeights(None)

# Train
svm.train(samples, cv2.ml.ROW_SAMPLE, labels)
svm.save('svmdata.xml')

0 个答案:

没有答案