Je travaille sur un problème de reconnaissance de marque optique. J'ai trouvé Région d'intérêt (ROI) où le numéro de rôle de l'étudiant à remplir. Quelle approche peut m'aider à décoder la valeur du cercle rempli? J'ai essayé de coder mais ça ne fonctionne pas correctement.Détecter le marqueur OCR
Images
Dans cette image initiale ROI est given.After que j'ai appliqué l'image segmentation.Third est remplie par des étudiants qui indiquent le numéro de rôle de l'étudiant.
cette image détecter 381 cercle, mais cercle réel sont 100
Input: Filled circle image
Output: roll number : 4216789503
image = cv2.imread("rotatedb/ROI_omr.png")
hsvimg = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower_blue = np.array([0,70,0])
upper_blue = np.array([255,255,255])
mask = cv2.inRange(hsvimg, lower_blue, upper_blue)
contours, hierarchy = cv2.findContours(mask.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
print "No. of circles",len(contours)
i=0
for contour in contours:
(x,y),radius = cv2.minEnclosingCircle(contour)
center = (int(x),int(y))
radius = int(radius)
cv2.circle(image,center,radius,(0,255,0),2)
position = (center[0] - 10, center[1] + 10)
text_color = (0, 0, 255)
cv2.putText(image, str(i + 1), position, cv2.FONT_HERSHEY_SIMPLEX, 0.5, text_color, 2)
i=i+1
cv2.imshow("thresold",image)
cv2.waitKey(0)
cv2.destroyAllWindows()
dans findContours utiliser le drapeau "externe" au lieu de 'cv2.RETR_TREE'. – Micka