File: dericheSample.py

package info (click to toggle)
opencv 4.5.1%2Bdfsg-5
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 268,248 kB
  • sloc: cpp: 969,170; xml: 682,525; python: 36,732; lisp: 30,170; java: 25,155; ansic: 7,927; javascript: 5,643; objc: 2,041; sh: 935; cs: 601; perl: 494; makefile: 145
file content (60 lines) | stat: -rw-r--r-- 2,257 bytes parent folder | download
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
import sys
import numpy as np
import cv2 as cv

def AddSlider(sliderName,windowName,minSlider,maxSlider,valDefault, update=[]):
    if update is None:
        cv.createTrackbar(sliderName, windowName, valDefault,maxSlider-minSlider+1)
    else:
        cv.createTrackbar(sliderName, windowName, valDefault,maxSlider-minSlider+1, update)
    cv.setTrackbarMin(sliderName, windowName, minSlider)
    cv.setTrackbarMax(sliderName, windowName, maxSlider)
    cv.setTrackbarPos(sliderName, windowName, valDefault)
class Filtrage:
    def __init__(self):
        self.s =0
        self.alpha = 100
        self.omega = 100
        self.updateFiltre=True
        self.img=[]
        self.dximg=[]
        self.dyimg=[]
        self.module=[]
    def DericheFilter(self):
        self.dximg = cv.ximgproc.GradientDericheX(	self.img, self.alpha/100., self.omega/1000.	)
        self.dyimg = cv.ximgproc.GradientDericheY(	self.img, self.alpha/100., self.omega/1000.	)
        dx2=self.dximg*self.dximg
        dy2=self.dyimg*self.dyimg
        self.module = np.sqrt(dx2+dy2)
        cv.normalize(src=self.module,dst=self.module,norm_type=cv.NORM_MINMAX)
    def SlideBarDeriche(self):
        cv.destroyWindow(self.filename)
        cv.namedWindow(self.filename)
        AddSlider("alpha",self.filename,1,400,self.alpha,self.UpdateAlpha)
        AddSlider("omega",self.filename,1,1000,self.omega,self.UpdateOmega)

    def UpdateOmega(self,x ):
        self.updateFiltre=True
        self.omega=x
    def UpdateAlpha(self,x ):
        self.updateFiltre=True
        self.alpha=x
    def run(self,argv):
        # Load the source image
        self.filename = argv[0] if len(argv) > 0 else "../doc/pics/corridor_fld.jpg"
        self.img=cv.imread(self.filename,cv.IMREAD_GRAYSCALE)
        if self.img is None:
            print ('cannot read file')
            return
        self.SlideBarDeriche()
        while True:
            cv.imshow(self.filename,self.img)
            if self.updateFiltre:
                self.DericheFilter()
                cv.imshow("module",self.module)
                self.updateFiltre =False
            code = cv.waitKey(10)
            if code==27:
                break
if __name__ == '__main__':
    Filtrage().run(sys.argv[1:])