Amazing-Python-Scripts
77 строк · 1.8 Кб
1# *^_^* coding:utf-8 *^_^*
2
3"""
4Smoke detection based on SVM and HOG
5"""
6
7__author__ = 'stone'
8__date__ = '15-11-13'
9
10import os
11import cv2
12import numpy as np
13
14train_dir = '../medias/smoke/positive'
15test_dir = '../medias/smoke/test'
16svm_params = dict(kernel_type=cv2.ml.SVM_LINEAR,
17svm_type=cv2.ml.SVM_C_SVC,
18C=2.67, gamma=5.385)
19
20
21def image_path(path):
22files = os.listdir(path)
23img_path = []
24
25for name in files:
26fullname = os.path.join(path, name)
27img_path.append(fullname)
28
29return img_path
30
31
32def hog_feature(path):
33img = cv2.imread(path)
34padding = (8, 8)
35block_stride = (8, 8)
36descriptor = cv2.HOGDescriptor()
37hog = descriptor.compute(img, block_stride, padding)
38return hog
39
40
41if __name__ == '__main__':
42print __doc__
43
44train_image = image_path(train_dir)
45test_image = image_path(test_dir)
46response = [1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1]
47print(response)
48response = np.array(response)
49train_data = train_image[:]
50train_hog = []
51for img in train_data:
52hog = hog_feature(img)
53print 'hog_values'
54print hog
55print '\n'
56train_hog.append(hog)
57# np.savetxt('0.1hog_train.txt', train_hog)
58test_hog = []
59print test_image
60for img in test_image:
61hog = hog_feature(img)
62test_hog.append(hog)
63# np.savetxt('0.1hog_test.txt', test_hog)
64
65train_hog = np.float32(train_hog)
66test_hog = np.float32(test_hog)
67
68svm = cv2.ml.SVM_create()
69svm.setGamma(0.5)
70svm.setC(1)
71svm.setKernel(cv2.ml.SVM_RBF)
72svm.setType(cv2.ml.SVM_C_SVC)
73print(train_hog)
74svm.train(train_hog, cv2.ml.ROW_SAMPLE, response)
75print(svm.isTrained())
76result = svm.predict(test_hog)
77print result
78