Я работаю над программным обеспечением, которое должно распознавать несколько цифр. Для обрезки цифр изображения я использую openCV. Проблема в том, что алгоритм ограничивающей коробки не только обнаруживает цифры. Он также обнаруживает структуру в цифре. enter image description hereОпределить цифры с помощью алгоритма OpenCV Bounding Box в Python
Самый простой способ решить эту задачу - установить минимальный размер, который должна иметь структура. Это не работает, потому что я должен обнаруживать цифры любого размера. Есть ли у кого-нибудь идея решить эту проблему?
Это код:
im = cv2.imread('img.jpg')
gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
contours,hierarchy = cv2.findContours(gray,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
idx = 0
for cnt in contours:
xe,ye,we,he = cv2.boundingRect(cnt)
roi=im[ye-100:ye+he+100,xe-100:xe+we+100]
if xe > 30:
if ye > 30:
if he > 30:
if we > 30:
idx += 1
cv2.imwrite(str(idx) + '.jpg', roi)
cv2.rectangle(im,(xe,ye),(xe+we,ye+he),(200,0,0),2)
cv2.imwrite('dev.jpg', im)
попробовать 'RETR_EXTERNAL' вместо' RETR_LIST' Он должен извлечь только внешний контур, если я понял документацию правильно. – M4rtini
Большое спасибо. Это работает – avaj
@ M4rtini: можете ли вы превратить это в ответ для дальнейшего использования? – gariepy