原文代码在python3.0或者opencv版本不同下跑不通。
我这里做一些改动,自行参考,文笔有限。
改动点1:图像输入自定义,不再固定名称
改动点2:解决找不到sift、svm组件类型问题
改动点3:解决svm训练的标签错误问题
改动点4:解决导入不了svm模型问题
等
注意:SVM.train中标签一定要为整数类型
代码如下:
import cv2
import numpy as np
import os
TrainSetInfo = {
"car":40,
"city":20,
"dog":30,
"earth":15,
"fireworks":20,
"flowers":20,
"fruits":20,
"glass":20,
"gold":15,
"gun":20,
"plane":40,
"sky":30,
"worldcup":40
}
TestSetInfo = {
"car":119,
"city":59,
"dog":49,
"earth":24,
"fireworks":54,
"flowers":63,
"fruits":78,
"glass":52,
"gold":44,
"gun":44,
"plane":102,
"sky":78,
"worldcup":131
}
def calcSiftFeature(img):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
sift =