2017-03-04 9 views
0

Nach dem Entfernen des Captcha-Hintergrunds.
Das Bild bleibt Ziffern und Rauschen.
Rauschlinie ist alles in einer Farbe: RGB (127,127,127)
Und dann mit Morphologie-Methode.python - opencv morphologyEx spezifische Farbe entfernen

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2, 2)) 
    self.im = cv2.morphologyEx(self.im, cv2.MORPH_CLOSE, kernel) 

Ein Teil der Ziffer wird entfernt werden.
Wie verwende ich morphologyEx() entferne nur die Farbe in RGB (127,127,127)?

enter image description here enter image description here

Antwort

1

Um Farbe in einem bestimmten Bereich Sie cv2.inRange() Funktion nutzen müssen, zu beseitigen. Hier

ist der Code:

lower = np.array([126,126,126]) #-- Lower range -- 
upper = np.array([127,127,127]) #-- Upper range -- 
mask = cv2.inRange(img, lower, upper) 
res = cv2.bitwise_and(img, img, mask= mask) #-- Contains pixels having the gray color-- 
cv2.imshow('Result',res) 

Dies ist, was ich für die zwei Bilder bekommen Sie haben:

Bild 1:

enter image description here

Bild 2:

enter image description here

Sie machen von hier weiter.

1

Hier ist meine Lösung.
Ihre Antwort ist offensichtlich besser als meine.

def mop_close(self): 
    def morphological(operator=min): 
     height, width, _ = self.im.shape 
     # create empty image 
     out_im = np.zeros((height,width,3), np.uint8) 
     out_im.fill(255) # fill with white 
     for y in range(height): 
      for x in range(width): 
       try: 
        if self.im[y,x][0] ==127 and self.im[y,x][1] ==127 and self.im[y,x][2] ==127: 
         nlst = neighbours(self.im, y, x) 

         out_im[y, x] = operator(nlst,key = lambda x:np.mean(x)) 
        else: 
         out_im[y,x] = self.im[y,x] 
       except Exception as e: 
        print(e) 
     return out_im 

    def neighbours(pix,y, x): 
     nlst = [] 
     # search pixels around im[y,x] add them to nlst 
     for yy in range(y-1,y+1): 
      for xx in range(x-1,x+1): 
       try: 
        nlst.append(pix[yy, xx]) 
       except: 
        pass 
     return np.array(nlst) 

    def erosion(im): 
     return morphological(min) 

    def dilation(im): 
     return morphological(max) 

    self.im = dilation(self.im) 
    self.im = erosion(self.im) 

Endergebnis: enter image description here enter image description here

+0

kühlen Solange es funktioniert bin ich zufrieden. Veröffentlichen Sie auch das Endergebnis, wenn es Ihnen nichts ausmacht. : D –

+0

Ich habe eine kleine Anpassung in method.I angefügten Ergebnis hinter dem Artikel –

+0

Ihr Ergebnis sieht jetzt ziemlich anständig aus. Gute Arbeit!!! –

Verwandte Themen