Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/samples/python/lappyr.py
16337 views
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 as cv
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 = cv.pyrDown(img)
33
img1 = cv.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 = cv.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
cv.namedWindow('level control')
59
for i in xrange(leveln):
60
cv.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(cv.getTrackbarPos('%d'%i, 'level control') / 5)
68
pyr[i] *= v
69
res = merge_lappyr(pyr)
70
71
cv.imshow('laplacian pyramid filter', res)
72
73
if cv.waitKey(1) == 27:
74
break
75
76