(DEMO) Reconhecimento de Placas de Veículos utilizando PYTHON & OPENCV

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ต.ค. 2024
  • Modulo de reconhecimento de Placas de Veículos utilizando Python & OpenCV, desenvolvido como trabalho de conclusão de curso (2017)
    DEMONSTRATIVO
    OpencvPython
    Algoritmos de PDI (Processamento Digital de Imagens) com Tesseract-OCR & Opencv em Python, para reconhecimento de identificação de Placas em Imagens/Vídeos de veículos.
    Projeto disponivel na IDE PyCharm
    Bibliotecas: OpenCV - docs.opencv.or... & Tesseract-OCR - github.com/mad...
    Video de demonstração : • (DEMO) Reconhecimento ...
    Artigo : drive.google.c...
    Github : github.com/ayu...
    O Vídeo acima é apenas a demonstração do Script "Reconhecimento de Placas através de Retângulo", no site acima está disponível o link para o projeto no GitHub. Não se prendam apenas em copiar e colar o código base,, foi disponibilizado também o livro em PDF "Python e OpenCV" na qual foi retirado o conteúdo necessário,
    Leiam sobre o funcionamento da funções e como ela se comporta no contexto, o que cada passo e comentário quer dizer, que com o básico de PDI qualquer pessoa conseguirá utilizar o Reconhecimento de Placas por Retângulos.
    Boa Sorte!

ความคิดเห็น • 35

  • @AlexandreH7
    @AlexandreH7  6 ปีที่แล้ว +4

    Sobre o scripts disponibilizados no GitHub, na demonstração é utilizado apenas o EncontrarPlacaHD.py leiam sobre Tesseract-OCR o script apenas faz a "Detecção" das placas, está no artigo! Boa Sorte!
    (Leiam o livro disponibilizado e não apenas copiem e colem")

    • @diegoduarte9059
      @diegoduarte9059 6 ปีที่แล้ว +1

      Estou trabalhando com detecção de imagens e o seu trabalho está me ajudando muito! Conforme você falou, não apenas copiem, mas estudem e leiam para entender. Trabalho perfeito.

  • @mm_ww_2
    @mm_ww_2 6 ปีที่แล้ว +1

    Porque o algoritmo entende um U ao invés de um O? Tipo, o dá pra entender que o desenho do U está contido no desenho do O, mas nao deveria acontecer esse tipo de erro... Vc conseguiu concertar?

  • @waslleys
    @waslleys 6 ปีที่แล้ว +2

    Qual o tempo médio de resposta do reconhecimento dos caracteres?

  • @AlexandreH7
    @AlexandreH7  5 ปีที่แล้ว +2

    Links atualizados para o Código e Artigo (y)

  • @diegoduarte9059
    @diegoduarte9059 5 ปีที่แล้ว +1

    Alexandre. Você poderia disponibiizar o link dos livros aqui? O seu site está fora do ar.

  • @mariosergiopereira5830
    @mariosergiopereira5830 5 ปีที่แล้ว

    Alexandre teria como você disponibilizar o conteúdo do seu trabalho pois o site que você indicou não esta no ar, obrigado.

  • @Gabo_1457
    @Gabo_1457 5 ปีที่แล้ว

    Hello! Can you do some examples using the camera? I mean, detect some numbers using camera and python?

  • @giovanimanenti
    @giovanimanenti 3 ปีที่แล้ว

    Muito bom! Parabéns!!

  • @rodrigodignai
    @rodrigodignai ปีที่แล้ว +1

    alguém já fez uso do ecognition para esta finalidade?

  • @juanjosefuentessantamaria8792
    @juanjosefuentessantamaria8792 3 ปีที่แล้ว

    hola amigo disculpa tendras todo tu proyecto en git no sale todo como en este video, faltan archivos .py

  • @leonardofreitas6205
    @leonardofreitas6205 5 ปีที่แล้ว

    Alexandre, seu site não está no ar, vc poderia disponibilizar seu artigo?

  • @johnbh3
    @johnbh3 3 ปีที่แล้ว

    Fiz uma alteração passando o parametro (0), ele identifica a camera em tempo real. Eu estou usando a webcam do computador.
    O video fica ligado intermitente, diferente do do video gravado que você colocou no teste (Ele da o play no video), e fecha os frame (Embora mostra o resultado da placa do uno errado) porém finaliza.
    No video com source (0), ele não fecha fica os frame aberto sem fechar, ele até foca a placa, mas estou usando papel na simulação.
    Ele identifica a placa marcando o quadrado referente onde fica a placa porém não fecha e não da nenhum resultado.
    Dai eu não sei se foi pq alterei o fonte
    onde passava a area eu passei o frame porque estava dando erro alterando video = cv2.VideoCapture(0)
    #######################################################
    # Detecção de Placas atraves de contornos HD #
    # by AY7 #
    #######################################################
    import pytesseract
    import cv2
    def desenhaContornos(contornos, imagem):
    for c in contornos:
    # perimetro do contorno, verifica se o contorno é fechado
    perimetro = cv2.arcLength(c, True)
    if perimetro > 120:
    # aproxima os contornos da forma correspondente
    approx = cv2.approxPolyDP(c, 0.03 * perimetro, True)
    # verifica se é um quadrado ou retangulo de acordo com a qtd de vertices
    if len(approx) == 4:
    # Contorna a placa atraves dos contornos encontrados
    (x, y, lar, alt) = cv2.boundingRect(c)
    cv2.rectangle(imagem, (x, y), (x + lar, y + alt), (0, 255, 0), 2)
    # segmenta a placa da imagem
    roi = imagem[y:y + alt, x:x + lar]
    cv2.imwrite("output/roi.png", roi)
    def buscaRetanguloPlaca(source):
    # Captura ou Video
    video = cv2.VideoCapture(0)
    while video.isOpened():
    ret, frame = video.read()
    if (ret == False):
    break
    # area de localização u 720p
    area = frame[500:, 300:800]
    # area de localização 480p
    # area = frame[350:, 220:500]
    # escala de cinza
    img_result = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    # limiarização
    ret, img_result = cv2.threshold(img_result, 90, 255, cv2.THRESH_BINARY)
    # desfoque
    img_result = cv2.GaussianBlur(img_result, (5, 5), 0)
    # lista os contornos
    contornos, hier = cv2.findContours(img_result, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
    # limite horizontal
    cv2.line(frame, (0, 500), (1280, 500), (0, 0, 255), 1)
    # limite vertical 1
    cv2.line(frame, (300, 0), (300, 720), (0, 0, 255), 1)
    # limite vertical 2
    cv2.line(frame, (800, 0), (800, 720), (0, 0, 255), 1)
    cv2.imshow('FRAME', frame)
    desenhaContornos(contornos, frame)
    cv2.imshow('RES', frame)
    if cv2.waitKey(1) & 0xff == ord('q'):
    break
    video.release()
    preProcessamentoRoi()
    cv2.destroyAllWindows()
    def preProcessamentoRoi():
    img_roi = cv2.imread("output/roi.png")
    # cv2.imshow("ENTRADA", img_roi)
    if img_roi is None:
    return
    # redmensiona a imagem da placa em 4x
    img = cv2.resize(img_roi, None, fx=4, fy=4, interpolation=cv2.INTER_CUBIC)
    # Converte para escala de cinza
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # cv2.imshow("Escala Cinza", img)
    # Binariza imagem
    _, img = cv2.threshold(img, 70, 255, cv2.THRESH_BINARY)
    cv2.imshow("Limiar", img)
    # Desfoque na Imagem
    img = cv2.GaussianBlur(img, (5, 5), 0)
    # cv2.imshow("Desfoque", img)
    # Aplica reconhecimento OCR no ROI com o Tesseract
    cv2.imwrite("output/roi-ocr.png", img)
    return img
    def reconhecimentoOCR():
    img_roi_ocr = cv2.imread("output/roi-ocr.png")
    if img_roi_ocr is None:
    return
    config = r'-c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 --psm 6'
    saida = pytesseract.image_to_string(img_roi_ocr, lang='eng', config=config)
    print(saida)
    return saida
    if __name__ == "__main__":
    source = "resource/video720p.mkv"
    buscaRetanguloPlaca(source)
    preProcessamentoRoi()
    reconhecimentoOCR()

  • @rafael.passaur
    @rafael.passaur 4 ปีที่แล้ว

    Gostaria de poder ver seu artigo e código, estou tentando desenvolver um projeto que abrange o mesmo assunto, mas sua pagina está fora do ar. Teria como disponibilizar novamente?

    • @AlexandreH7
      @AlexandreH7  4 ปีที่แล้ว

      Links atualizado na descricao

    • @rafael.passaur
      @rafael.passaur 4 ปีที่แล้ว

      @@AlexandreH7 Muito obrigado pelo retorno!

  • @gilmarvaz1441
    @gilmarvaz1441 5 ปีที่แล้ว

    Tem como disponibilizar o haarcascade ?

  • @iltonrotta
    @iltonrotta 4 ปีที่แล้ว

    Qual câmera deve ser usada ?

    • @AlexandreH7
      @AlexandreH7  4 ปีที่แล้ว

      Nesse caso aí uma WebCam 720p... Enquanto maior a resolução maior o processamento e mais demorado o reconhecimento

  • @juninhovit
    @juninhovit 6 ปีที่แล้ว

    poderia disponibilizar o codigo estou fazendo um projeto que abrange esta area

    • @AlexandreH7
      @AlexandreH7  6 ปีที่แล้ว +2

      junior jr verifica meu Git/Hub, Link na minha Page: alexandrehenrique.esy.es/

  • @luanaketlinalves6603
    @luanaketlinalves6603 6 ปีที่แล้ว

    Eu estou tentando desenvolver um projeto no mesmo sentido e estou com muitas duvidas, alguem poderia me ajudar?

    • @AlexandreH7
      @AlexandreH7  6 ปีที่แล้ว

      Luana Ketlin Procura sobre OpenCV e Tesseract, tem bastante conteúdo incluisive em Python/Java/C++

    • @AlexandreH7
      @AlexandreH7  6 ปีที่แล้ว

      Luana Ketlin Pode me mandar um e-mail caso precise saber sobre algo!

  • @lucasrezende2340
    @lucasrezende2340 6 ปีที่แล้ว

    Olá Alexandre, muito legal seu projeto, Parabéns!!
    Estou tentando compilar o projeto, (EncontrarPlacaHD) mas estou tendo algumas dificuldades, poderia me ajudar?
    Eu criei o caminho no diretório C: /Tesseract-OCR/saidas/roi, mas não coloquei nada neste, e me aparece esse erro:
    File "C:/Users/ONLY ON LUCAS/Desktop/OpencvPython-master/PDIPython/EncontrarPlacaHD.py", line 116, in
    reconhecimentoOCR("C:/Tesseract-OCR/saidas/roi")
    File "C:/Users/ONLY ON LUCAS/Desktop/OpencvPython-master/PDIPython/EncontrarPlacaHD.py", line 40, in reconhecimentoOCR
    img = cv2.resize(entrada, None, fx=4, fy=4, interpolation=cv2.INTER_CUBIC)
    cv2.error: C:\projects\opencv-python\opencv\modules\imgproc\src
    esize.cpp:4044: error: (-215) ssize.width > 0 && ssize.height > 0 in function cv::resize

    • @AlexandreH7
      @AlexandreH7  6 ปีที่แล้ว

      Lucas Rezende amigo dá uma olhada nas bibliotecas se foram importadas corretamente, pra mais informações verifica o Artigo completo sobre o projeto no meu site alexandrehenrique.esy.es/

    • @lucasrezende2340
      @lucasrezende2340 6 ปีที่แล้ว

      Alexandre, verifiquei as bibliotecas!! Não há nenhum erro nelas, quando o projeto é executado.
      O erro que ocorre, é na linha 116 no projeto EncontrarPlacaHD, nas pastas que você criou: /Tesseract-OCR/saidas/roi.
      Há algo nessas pastas, ou em uma delas? Pois eu simplesmente as criei e não descompactei nenhum arquivo em nenhuma delas.

  • @fefelima1991
    @fefelima1991 6 ปีที่แล้ว

    estou com um projeto parecido, poderia me fornecer o codigo fonte?

    • @AlexandreH7
      @AlexandreH7  6 ปีที่แล้ว +1

      Felipe Lima de Oliveira alexandrehenrique.esy.es/ e vai no meu Git/Hub

    • @fefelima1991
      @fefelima1991 6 ปีที่แล้ว

      Vou procurar, muito obrigado!

    • @lucasrezende2340
      @lucasrezende2340 6 ปีที่แล้ว

      Olá Felipe, você conseguiu rodar o projeto?

    • @fefelima1991
      @fefelima1991 6 ปีที่แล้ว +1

      Oi, tudo bom? Não consegui, baixei os arquivos necessários, comecei a ler uma apostila que ele indicou no link acima que vai falando meio que um passo a passo para instalação e rodar o programa, mas mesmo assim não rodou.

    • @lucasrezende2340
      @lucasrezende2340 6 ปีที่แล้ว

      Tudo Ótimo!!
      Felipe, a apostila que você se refere que tem o passo a passo é a monografia? Pois não encontrei um passo a passo do que precisa para rodar o programa(instalar), etc.
      Estou tentando executar o arquivo EncontrarPlacaHD, mas ele dá erro na linha onde tem esse caminho
      C: /Tesseract-OCR/saidas/roi
      Neste caminho, no diretório C:, vc criou as pastas subsequentes? Ou seja, Tesseract-OCR, saidas e roi?O que vc colou em cada uma delas? Descompactou algo? colou algum arquivo nelas?