-
Notifications
You must be signed in to change notification settings - Fork 2
/
laser.py
executable file
·59 lines (46 loc) · 1.51 KB
/
laser.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
#!/usr/bin/python
from opencv import *
from opencv.highgui import *
def main():
capture = cvCaptureFromCAM(0)
frame = cvQueryFrame(capture)
size = cvSize(frame.width, frame.height)
copy = cvCreateImage(size, 8, 3)
r = cvCreateImage(size, 8, 1)
g = cvCreateImage(size, 8, 1)
b = cvCreateImage(size, 8, 1)
mask = cvCreateImage(size, 8, 1)
mask2 = cvCreateImage(size, 8, 1)
laser = cvCreateImage(size, 8, 1)
max = cvCreateImage(size, 8, 1)
min = cvCreateImage(size, 8, 1)
diff = cvCreateImage(size, 8, 1)
cvNamedWindow('laser', 1)
while True:
frame = cvQueryFrame(capture)
cvFlip(frame, copy, 1)
cvSplit(copy, b, g, r)
# assert |r-g| > 50
cvAbsDiff(r, g, diff)
cvCmpS(diff, 50, mask, CV_CMP_GT)
# cvAnd(mask, mask2, mask)
# assert |r-b| > 50
cvAbsDiff(r, b, diff)
cvCmpS(diff, 50, mask2, CV_CMP_GT)
cvAnd(mask, mask2, mask)
# assert r > g
cvCmp(r, g, mask2, CV_CMP_GT)
cvAnd(mask, mask2, mask)
# assert r > b
cvCmp(r, b, mask2, CV_CMP_GT)
cvAnd(mask, mask2, mask)
# assert r > 200
cvCmpS(r, 200, mask2, CV_CMP_GT)
cvAnd(mask, mask2, mask)
cvDilate(mask, mask, None, 1)
cvAddWeighted(mask, 1.0, laser, 0.95, 0.0, laser)
cvShowImage('laser', laser)
k = cvWaitKey(10)
if k == 27: break
if __name__ == '__main__':
main()