-
Notifications
You must be signed in to change notification settings - Fork 1
/
Laberinto_Camera_Code.py
122 lines (97 loc) · 3.8 KB
/
Laberinto_Camera_Code.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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import sensor, image, time, math, pyb
from pyb import Pin
blackthreshold = (0, 11, -17, 10, -26, 14)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
#sensor.set_vflip(True)
sensor.skip_frames(time = 500)
clock = time.clock()
while(True):
clock.tick()
img = sensor.snapshot()
img.lens_corr(2.0)
letter_blob = -1
blobsL = img.find_blobs([blackthreshold], area_threshold=200)#200
if blobsL:
letter_blob = max(blobsL, key=lambda bL: bL.area())
if letter_blob != -1:
try:
letter = letter_blob.rect()
img.draw_rectangle(letter)
print("density = ", letter_blob.density())
if(letter_blob.density() > 0.7):
print("None is Found")
continue
sx = letter[0]
sy = letter[1]
ex = letter[0] + letter[2]
ey = letter[1] + letter[3]
w = letter[2]
h = letter[3]
rw = int(0.05 * w)
rh = int(0.05 * h)
mid_roi = (int(sx + w / 2 - rw), int(sy + h / 2 - rh), 2 * rw, 2 * rh)
img.draw_rectangle(mid_roi)
is_mid = 0
blobsR = 0
for x in [mid_roi]:
blobsR = img.find_blobs([blackthreshold],roi= x)
if blobsR:
largest_blobR = max(blobsR, key=lambda bL: bL.area())
if(largest_blobR.area() >= int(rw * rh / 1.5)):
is_mid = 1
if (is_mid == 0):
print("U Found")
continue
top_roi = (int(sx + w / 2 - rw), int(sy), 2 * rw, 2 * rh)
bottom_roi = (int(sx + w / 2 - rw), int(sy + h - rh), 2 * rw, 2 * rh)
img.draw_rectangle(top_roi)
img.draw_rectangle(bottom_roi)
is_top = 0
is_bottom = 0
blobsR = 0
for x in [top_roi]:
blobsR = img.find_blobs([blackthreshold],roi= x)
if blobsR:
largest_blobR = max(blobsR, key=lambda bL: bL.area())
if(largest_blobR.area() >= int(rw * rh / 1.5)):
is_top = 1
blobsR = 0
for x in [bottom_roi]:
blobsR = img.find_blobs([blackthreshold],roi= x)
if blobsR:
largest_blobR = max(blobsR, key=lambda bL: bL.area())
if(largest_blobR.area() >= int(rw * rh / 1.5)):
is_bottom = 1
if ((is_top == 0) and (is_bottom == 0)):
print("H Found")
continue
mid_top_roi = (int(sx + w / 2 - rw), int(sy), 2 * rw, 2 * rh)
mid_bottom_roi = (int(sx + w / 2 - rw), int(sy + h - rh), 2 * rw, 2 * rh)
img.draw_rectangle(mid_top_roi)
img.draw_rectangle(mid_bottom_roi)
is_mid_top = 0
is_mid_bottom = 0
blobsR = 0
for x in [mid_top_roi]:
blobsR = img.find_blobs([blackthreshold],roi= x)
if blobsR:
largest_blobR = max(blobsR, key=lambda bL: bL.area())
if(largest_blobR.area() >= int(rw * rh / 1.5)):
is_mid_top = 1
blobsR = 0
for x in [mid_bottom_roi]:
blobsR = img.find_blobs([blackthreshold],roi= x)
if blobsR:
largest_blobR = max(blobsR, key=lambda bL: bL.area())
if(largest_blobR.area() >= int(rw * rh / 1.5)):
is_mid_bottom = 1
if ((is_mid_top == 0) and (is_mid_bottom == 0)):
print("S Found")
else :
print("None is Found")
continue
except:
print("Error")
print("None is Found")