Diese Antwort doesn‘ t ellaborate maschinelles Lernen oder jeder Ansatz Klassifikatoren
die Kreise können von der Hough Circle Transformerkannt werdenvon OpenCV cv2.HoughCircles()
:
Documentation for Hough Circles in OpenCV
Hinweis: Durch den Radius verwenden Sie können tune die Form Größe der Kreise Sie erfassen möchten. Und um ehrlich zu sein, habe ich nicht wirklich verstanden, was punktierte Quadrate sind, vielleicht könnten Sie in Ihrer Frage ein vorbildliches Bild zeigen.
Wenn es nur zwei verschiedene Arten von Objekten im Bild gibt, brauchen Sie wahrscheinlich gar keinen Klassifikator, da die beiden Klassen bereits durch die nachfolgende Bildverarbeitung getrennt sind (das hängt jedoch stark von Ihren Eingabebildern ab).
import cv2
import numpy as np
img = cv2.imread('opencv_logo.png',0)
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,
param1=50,param2=30,minRadius=0,maxRadius=0)
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
# draw the outer circle
cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)
cv2.imshow('detected circles',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()
Ergebnis des Codes ist wie folgt
Ich sehe zwei Möglichkeiten: 1) verwenden als Eingabe das Bild und verwenden Faltungs neuronale Netze als Klassifizierer 2) einen Weg finden, das vertreten Bild zB Pixelintensität und verwenden Sie diese Werte als Features für einen Klassifikator (LDA, SVM) – sera
Histogramm von orientierten Gradienten (HoG) kombiniert mit SVM ist ein Klassifikator basierend auf Form. – Micka