मैं अजगर और ओपनसीवी का उपयोग कर एक हस्तलेख पहचान प्रणाली बनाने की कोशिश कर रहा हूं। पात्रों की मान्यता समस्या नहीं है लेकिन विभाजन है। मैं सफलतापूर्वक:ओपनसीवी - क्रॉपिंग हस्तलिखित रेखाएं (रेखा विभाजन)
- एकल वर्ण में एक शब्द भी खंडित किया
- आवश्यक आदेश में शब्दों में एक एक वाक्य खंडित किया।
लेकिन मैं दस्तावेज़ में अलग-अलग पंक्तियों को विभाजित नहीं कर सका। मैंने समोच्चों को क्रमबद्ध करने की कोशिश की (रेखा विभाजन से बचने और केवल शब्द विभाजन का उपयोग करने के लिए) लेकिन यह काम नहीं किया। (यह बाएँ से सही ढंग से हल कर शब्द रिटर्न) मैं एक हस्तलिखित दस्तावेज़ में निहित खंड शब्द के लिए निम्न कोड का इस्तेमाल किया है, लेकिन यह बाहर के आदेश शब्द रिटर्न:
import cv2
import numpy as np
#import image
image = cv2.imread('input.jpg')
#cv2.imshow('orig',image)
#cv2.waitKey(0)
#grayscale
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow('gray',gray)
cv2.waitKey(0)
#binary
ret,thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV)
cv2.imshow('second',thresh)
cv2.waitKey(0)
#dilation
kernel = np.ones((5,5), np.uint8)
img_dilation = cv2.dilate(thresh, kernel, iterations=1)
cv2.imshow('dilated',img_dilation)
cv2.waitKey(0)
#find contours
im2,ctrs, hier = cv2.findContours(img_dilation.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
#sort contours
sorted_ctrs = sorted(ctrs, key=lambda ctr: cv2.boundingRect(ctr)[0])
for i, ctr in enumerate(sorted_ctrs):
# Get bounding box
x, y, w, h = cv2.boundingRect(ctr)
# Getting ROI
roi = image[y:y+h, x:x+w]
# show ROI
cv2.imshow('segment no:'+str(i),roi)
cv2.rectangle(image,(x,y),(x + w, y + h),(90,0,255),2)
cv2.waitKey(0)
cv2.imshow('marked areas',image)
cv2.waitKey(0)
कृपया ध्यान दें कि मैं खंड सभी शब्दों यहाँ करने में सक्षम हूँ, लेकिन वे वहाँ order.Is अलग एल में छवि नीचे
या
खंड के लिए शीर्ष के क्रम में इन आकृति सॉर्ट करने के लिए किसी भी तरह से बाहर दिखाई देते हैं इनस ताकि प्रत्येक पंक्ति को उपरोक्त कोड का उपयोग करके शब्दों में विभाजित किया जा सके?
आप इसे एक्स और वाई द्वारा क्यों क्रमबद्ध नहीं करते? – Tom
असल में मैंने कोशिश की लेकिन यह सिर्फ फिर से समोच्चों की पूरी तरह से पुनरावृत्ति में परिणाम देता है। यह सही क्रम में समोच्च वापस नहीं करता है। मैंने बाएं-टू-दाएं सॉर्टिंग के बाद टॉप-डाउन सॉर्टिंग किया, लेकिन समोच्च क्रम से बाहर हैं। तो मुझे लगता है कि प्रत्येक लाइन को अलग करने की आवश्यकता होगी। –
एक्स, वाई के आधार पर एक सूची सॉर्टिंग कॉन्टूर बनाना, मैं सबसे आसान कहूंगा। एक छवि जोड़ें आप कर सकते हैं। –