2016-05-06 31 views
0

ich die Konturen eines Bildes extrahiert, das Sie hier sehen können: contourOpenCV wie Kontur glätten, Lärm zu reduzieren

Es ist jedoch etwas Lärm hat. Wie kann ich den Lärm glätten? Ich habe eine enge klarer zu machen, was ich enter image description here

Originalbild gemeint wollen, die ich verwendet habe: enter image description here

Code:

rMaskgray = cv2.imread('redmask.jpg', cv2.CV_LOAD_IMAGE_GRAYSCALE) 
(thresh, binRed) = cv2.threshold(rMaskgray, 50, 255, cv2.THRESH_BINARY) 

Rcontours, hier_r = cv2.findContours(binRed,cv2.RETR_CCOMP,cv2.CHAIN_APPROX_SIMPLE) 
r_areas = [cv2.contourArea(c) for c in Rcontours] 
max_rarea = np.max(r_areas) 
CntExternalMask = np.ones(binRed.shape[:2], dtype="uint8") * 255 

for c in Rcontours: 
    if((cv2.contourArea(c) > max_rarea * 0.70) and (cv2.contourArea(c)< max_rarea)): 
     cv2.drawContours(CntExternalMask,[c],-1,0,1) 

cv2.imwrite('contour1.jpg', CntExternalMask) 
+0

Könnten Sie schreiben den Code, den Sie diese erstellt haben? –

+0

@MartinEvans Bearbeitet! – marco

+0

Was passiert, wenn Sie cv2.CHAIN_APPROX_SIMPLE durch cv2.CHAIN_APPROX_NONE ersetzen? – tfv

Antwort

1

versuchen, eine OpenCV Upgrade 3.1.0 . Nach einigen Code-Anpassungen für die neue Version, wie unten gezeigt, habe ich es mit OpenCV Version 3.1.0 ausprobiert und keine der Effekte gesehen, die Sie beschreiben.

import cv2 
import numpy as np 

print cv2.__version__ 

rMaskgray = cv2.imread('5evOn.jpg', 0) 
(thresh, binRed) = cv2.threshold(rMaskgray, 50, 255, cv2.THRESH_BINARY) 

_, Rcontours, hier_r = cv2.findContours(binRed,cv2.RETR_CCOMP,cv2.CHAIN_APPROX_SIMPLE) 
r_areas = [cv2.contourArea(c) for c in Rcontours] 
max_rarea = np.max(r_areas) 
CntExternalMask = np.ones(binRed.shape[:2], dtype="uint8") * 255 

for c in Rcontours: 
    if((cv2.contourArea(c) > max_rarea * 0.70) and (cv2.contourArea(c)< max_rarea)): 
     cv2.drawContours(CntExternalMask,[c],-1,0,1) 

cv2.imwrite('contour1.jpg', CntExternalMask) 

enter image description here

+0

Ich habe noch einige Probleme: https://dl.dropboxusercontent.com/u/710615/externalpcb.jpg – marco

+0

Haben Sie jemals eine Lösung dafür gefunden? Entschuldigung, eine alte Frage mit dem gleichen Problem. @marco –

+0

@ Jonathan: Wie oben erwähnt, scheinen die Probleme mit der oben verwendeten OpenCV-Version verschwunden zu sein. Wenn dies bei Ihnen nicht der Fall ist, schreiben Sie ein Beispiel. – tfv