~paparazzi-uav/paparazzi/v5.0-manual

« back to all changes in this revision

Viewing changes to sw/ext/opencv_bebop/opencv/samples/python/lappyr.py

  • Committer: Paparazzi buildbot
  • Date: 2016-05-18 15:00:29 UTC
  • Revision ID: felix.ruess+docbot@gmail.com-20160518150029-e8lgzi5kvb4p7un9
Manual import commit 4b8bbb730080dac23cf816b98908dacfabe2a8ec from v5.0 branch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
 
 
3
''' An example of Laplacian Pyramid construction and merging.
 
4
 
 
5
Level : Intermediate
 
6
 
 
7
Usage : python lappyr.py [<video source>]
 
8
 
 
9
References:
 
10
  http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.54.299
 
11
 
 
12
Alexander Mordvintsev 6/10/12
 
13
'''
 
14
 
 
15
# Python 2/3 compatibility
 
16
from __future__ import print_function
 
17
import sys
 
18
PY3 = sys.version_info[0] == 3
 
19
 
 
20
if PY3:
 
21
    xrange = range
 
22
 
 
23
import numpy as np
 
24
import cv2
 
25
import video
 
26
from common import nothing, getsize
 
27
 
 
28
def build_lappyr(img, leveln=6, dtype=np.int16):
 
29
    img = dtype(img)
 
30
    levels = []
 
31
    for i in xrange(leveln-1):
 
32
        next_img = cv2.pyrDown(img)
 
33
        img1 = cv2.pyrUp(next_img, dstsize=getsize(img))
 
34
        levels.append(img-img1)
 
35
        img = next_img
 
36
    levels.append(img)
 
37
    return levels
 
38
 
 
39
def merge_lappyr(levels):
 
40
    img = levels[-1]
 
41
    for lev_img in levels[-2::-1]:
 
42
        img = cv2.pyrUp(img, dstsize=getsize(lev_img))
 
43
        img += lev_img
 
44
    return np.uint8(np.clip(img, 0, 255))
 
45
 
 
46
 
 
47
if __name__ == '__main__':
 
48
    import sys
 
49
    print(__doc__)
 
50
 
 
51
    try:
 
52
        fn = sys.argv[1]
 
53
    except:
 
54
        fn = 0
 
55
    cap = video.create_capture(fn)
 
56
 
 
57
    leveln = 6
 
58
    cv2.namedWindow('level control')
 
59
    for i in xrange(leveln):
 
60
        cv2.createTrackbar('%d'%i, 'level control', 5, 50, nothing)
 
61
 
 
62
    while True:
 
63
        ret, frame = cap.read()
 
64
 
 
65
        pyr = build_lappyr(frame, leveln)
 
66
        for i in xrange(leveln):
 
67
            v = int(cv2.getTrackbarPos('%d'%i, 'level control') / 5)
 
68
            pyr[i] *= v
 
69
        res = merge_lappyr(pyr)
 
70
 
 
71
        cv2.imshow('laplacian pyramid filter', res)
 
72
 
 
73
        if cv2.waitKey(1) & 0xFF == 27:
 
74
            break