-
Notifications
You must be signed in to change notification settings - Fork 0
/
NewProject.py
68 lines (51 loc) · 1.65 KB
/
NewProject.py
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
56
57
58
59
60
61
62
63
64
65
66
67
68
__author__ = 'yangh2'
import cv2
vidCap = cv2.VideoCapture(0)
cv2.ocl.setUseOpenCL(False)
img = cv2.imread("TestImages/Sample.jpg")
hit = []
while 1:
ret, vidO = vidCap.read()
hit = [0, 0, 0]
grey = cv2.cvtColor(vidO, cv2.COLOR_BGR2GRAY)
res, vid = cv2.threshold(grey, 100, 255, cv2.THRESH_BINARY_INV)
bfMatcher = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
kp = []
des = []
matches = []
orb = cv2.ORB_create()
kp1, des1 = orb.detectAndCompute(vid, None)
i = 600
while i <= 1800:
kp2, des2 = orb.detectAndCompute(img[0:600, i-600:i], None)
kp.append(kp2)
des.append(des2)
i = i + 600
matches1 = bfMatcher.match(des1, des2)
matches1.sort(key = lambda x: x.distance)
matches.append(matches1)
for k in range(3):
for j in range(len(matches[k])):
if matches[k][j].distance > 10:
break
else:
hit[k] = hit[k] + 1
# img4 = cv2.drawMatches(vid, kp1, img[0:600, 600 * k:600 * k + 600], kp[k], matches[k][:j], None)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(vidO, str(hit), (100,100),font, 1, (0,0,255))
cv2.imshow("Video", vidO)
char = cv2.waitKey(10)
if chr(char & 0xFF) == 'q':
# cv2.imwrite("Capture.jpg", vid)
break
elif chr(char & 0xFF) == ' ':
largest = 0
record = 0
for i in range(len(hit)):
print i
if largest < hit[i]:
largest = max(hit[i],largest)
record = i
print hit
print "The letter is " + chr(ord('A')+record) + "."
cv2.destroyAllWindows()