Blame view

3rdparty/opencv-4.5.4/samples/python/laplace.py 2.25 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
61
62
63
64
65
66
67
68
69
  #!/usr/bin/env python
  
  '''
      This program demonstrates Laplace point/edge detection using
      OpenCV function Laplacian()
      It captures from the camera of your choice: 0, 1, ... default 0
      Usage:
          python laplace.py <ddepth> <smoothType> <sigma>
          If no arguments given default arguments will be used.
  
      Keyboard Shortcuts:
      Press space bar to exit the program.
      '''
  
  # Python 2/3 compatibility
  from __future__ import print_function
  
  import numpy as np
  import cv2 as cv
  import sys
  
  def main():
      # Declare the variables we are going to use
      ddepth = cv.CV_16S
      smoothType = "MedianBlur"
      sigma = 3
      if len(sys.argv)==4:
          ddepth = sys.argv[1]
          smoothType = sys.argv[2]
          sigma = sys.argv[3]
      # Taking input from the camera
      cap=cv.VideoCapture(0)
      # Create Window and Trackbar
      cv.namedWindow("Laplace of Image", cv.WINDOW_AUTOSIZE)
      cv.createTrackbar("Kernel Size Bar", "Laplace of Image", sigma, 15, lambda x:x)
      # Printing frame width, height and FPS
      print("=="*40)
      print("Frame Width: ", cap.get(cv.CAP_PROP_FRAME_WIDTH), "Frame Height: ", cap.get(cv.CAP_PROP_FRAME_HEIGHT), "FPS: ", cap.get(cv.CAP_PROP_FPS))
      while True:
          # Reading input from the camera
          ret, frame = cap.read()
          if ret == False:
              print("Can't open camera/video stream")
              break
          # Taking input/position from the trackbar
          sigma = cv.getTrackbarPos("Kernel Size Bar", "Laplace of Image")
          # Setting kernel size
          ksize = (sigma*5)|1
          # Removing noise by blurring with a filter
          if smoothType == "GAUSSIAN":
              smoothed = cv.GaussianBlur(frame, (ksize, ksize), sigma, sigma)
          if smoothType == "BLUR":
              smoothed = cv.blur(frame, (ksize, ksize))
          if smoothType == "MedianBlur":
              smoothed = cv.medianBlur(frame, ksize)
  
          # Apply Laplace function
          laplace = cv.Laplacian(smoothed, ddepth, 5)
          # Converting back to uint8
          result = cv.convertScaleAbs(laplace, (sigma+1)*0.25)
          # Display Output
          cv.imshow("Laplace of Image", result)
          k = cv.waitKey(30)
          if k == 27:
              return
  if __name__ == "__main__":
      print(__doc__)
      main()
      cv.destroyAllWindows()