Blame view

3rdparty/opencv-4.5.4/samples/python/inpaint.py 1.17 KB
f4334277   Hu Chunming   提交3rdparty
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
  #!/usr/bin/env python
  
  '''
  Inpainting sample.
  
  Inpainting repairs damage to images by floodfilling
  the damage with surrounding image areas.
  
  Usage:
    inpaint.py [<image>]
  
  Keys:
    SPACE - inpaint
    r     - reset the inpainting mask
    ESC   - exit
  '''
  
  # Python 2/3 compatibility
  from __future__ import print_function
  
  import numpy as np
  import cv2 as cv
  
  from common import Sketcher
  
  def main():
      import sys
      try:
          fn = sys.argv[1]
      except:
          fn = 'fruits.jpg'
  
      img = cv.imread(cv.samples.findFile(fn))
      if img is None:
          print('Failed to load image file:', fn)
          sys.exit(1)
  
      img_mark = img.copy()
      mark = np.zeros(img.shape[:2], np.uint8)
      sketch = Sketcher('img', [img_mark, mark], lambda : ((255, 255, 255), 255))
  
      while True:
          ch = cv.waitKey()
          if ch == 27:
              break
          if ch == ord(' '):
              res = cv.inpaint(img_mark, mark, 3, cv.INPAINT_TELEA)
              cv.imshow('inpaint', res)
          if ch == ord('r'):
              img_mark[:] = img
              mark[:] = 0
              sketch.show()
  
      print('Done')
  
  
  if __name__ == '__main__':
      print(__doc__)
      main()
      cv.destroyAllWindows()