Oi, Diego! Tudo certo?
Parabéns pelo avanço no projeto! É visível o quanto você está se dedicando, especialmente por já estar aplicando as aulas em um cenário mais complexo, com câmera em movimento.
Você está enfrentando um desafio da vida real. As variações de ângulo, movimento e iluminação tornam o problema muito mais exigente, mas também muito mais interessante! Aponto algumas sugestões que podem te ajudar:
1 Ajuste de luminosidade e contraste automático
Você pode aplicar o Histogram Equalization ou CLAHE para lidar com a luz:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
equalized = clahe.apply(gray)
2 Aprimore a nitidez da placa
A nitidez ajuda o OCR a reconhecer os caracteres:
kernel = np.array([[0, -1, 0], [-1, 5,-1], [0, -1, 0]])
sharpened = cv2.filter2D(equalized, -1, kernel)
3 Configuração do Pytesseract
Inclua parâmetros customizados para melhorar a extração:
import pytesseract
custom_config = r'--oem 3 --psm 7 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
text = pytesseract.image_to_string(sharpened, config=custom_config)
O psm 7
é ideal para quando você já tem uma placa bem isolada.
Espero ter ajudado e fico à disposição se precisar.
Abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado