Robustere Bildverarbeitung für das Finden von Teilen in der Kameraansicht mit OpenCV? [geschlossen]Python

Python-Programme
Anonymous
 Robustere Bildverarbeitung für das Finden von Teilen in der Kameraansicht mit OpenCV? [geschlossen]

Post by Anonymous »

Ich versuche, Teile in einem Tablett zu zählen. Sie sind eindeutig schwarz gegen einen Karton -farbige Box, also habe ich das Histogramm angesehen und ein binäres Bild basierend auf einem Prozentsatz aus dem dunkelsten Pixelwert berechnet und dann Morphologie verwendet. haben, wenn sich die Teile am Rande der Kameraansicht befinden, überlappen sie sich, die die Blob -Analyse durcheinander bringen. Am Rande der Kameraansicht < /li>
< /ul>
2 Bildszenarien < /p>
Eine intelligente Art und Weise, wie ich dies beheben könnte? Ich bin offen für alle möglichen Vorschläge, auch wenn ich mich vor der klassischen OpenCV -Bildverarbeitung scheuen und vielleicht die Klassifizierung neuronaler Netzwerk annehmen muss. < /P>

Code: Select all

def preprocess_inspection(img):
if len(img.shape) == 3:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
else:
gray = img

hist = cv2.calcHist([gray], [0], None, [256], [0, 256])

cdf = hist.cumsum()

cdf_normalized = cdf / cdf[-1]

median_intensity = np.argmax(cdf_normalized >= 0.5)  # intensity where 50% of pixels are below

contrast = np.std(gray)

if contrast < 30:
percentage = 0.2
elif contrast < 60:
percentage = 0.15
else:
percentage = 0.1

if median_intensity < 128:
percentage = max(percentage, 0.1)

min_val, max_val, _, _ = cv2.minMaxLoc(gray)
_, thresh = cv2.threshold(gray, min_val + (max_val - min_val) * percentage, 255, 0) # % from min

return thresh

def apply_morphology(img):
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))
# NOTE: Image is inverted, so the operations are reversed, i.e. erode instead of dilate, etc.
img = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel, iterations=8)
img = cv2.dilate(img, kernel, iterations=2)
return img

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post