Pergunta

Eu tenho um site que permite aos usuários fazer upload de imagens de carros e eu gostaria de colocar um filtro de privacidade no lugar para detectar chapas de matrícula no veículo e blur-los.

A indefinição não é um problema, mas existe uma biblioteca ou componente (open source de preferência) que irão ajudar a encontrar uma licença dentro de uma foto?

Advertências;

  1. Não sei nada é o reconhecimento perfeito e imagem deste tipo irá fornecer falsos positivos e negativos.
  2. Eu aprecio que poderíamos pedir ao usuário para selecionar a área a borrar e vamos fazer isso também, mas a questão é especificamente sobre considerar que os dados de programação; então responde como 'obter uma pessoa para verificar cada imagem' não é útil.
  3. Este método software é chamado de 'Automatic Número placa de reconhecimento' no Reino Unido, mas não consigo ver qualquer implementações de la como bibliotecas.
  4. Qualquer língua é ótimo, embora é o preferido .Net.
Foi útil?

Solução

I codificado uma versão C # baseado em JAVA ANPR, mas eu mudei as funções da biblioteca AWT com OpenCV. Você pode verificá-la em http://anprmx.codeplex.com

Outras dicas

Editar :. Eu escrevi um Python roteiro para este

Como o seu objetivo está a esbater (para proteção de privacidade), basicamente você precisa de um alto recordar detector como um primeiro passo. Veja como vai fazer sobre isso. As dicas de código incluídos usar OpenCV com Python.

  1. Converter em escala de cinza.
  2. Aplicar Gaussian Blur.

    img = cv2.imread('input.jpg',1)
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    img_gray = cv2.GaussianBlur(img_gray, (5,5), 0)  
    

Deixe a imagem de entrada ser a seguinte.

enter descrição da imagem aqui

  1. Aplicar Sobel Filtro para detectar bordas verticais.
  2. Threshold a imagem resultante utilizando limite estrito ou binarização de OTSU.

    cv2.Sobel(image, -1, 1, 0)
    cv2.threshold() 
    
  3. Aplique uma operação de fechamento morfológica usando elemento estruturante adequado. (Eu usei 16x4 como elemento estruturante)

    se = cv2.getStructuringElement(cv2.MORPH_RECT,(16,4))
    cv2.morphologyEx(image, cv2.MORPH_CLOSE, se)  
    

imagem resultante após o passo 5.

enter descrição da imagem aqui

  1. Encontre contornos externos desta imagem.

    cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) 
    
  2. Para cada contorno, encontrar o minAreaRect() delimitadora-lo.

  3. Selecionar retângulos com base na relação de aspecto, espaço mínimo e máximo, eo ângulo com a horizontal. (Eu usei 2.2 <= Proporção <= 8, 500 <= Área <= 15000, e o ângulo <= 45 graus)

Todos os minAreaRect()s são mostrados em laranja e aquele que satisfaz nossos critérios está no verde.

enter descrição da imagem aqui

  1. Pode haver falsos positivos após este passo, para filtrá-lo, a densidade de utilização borda. Densidade de Borda é definido como o número de pixels brancos / número total de pixels em um retângulo. Estabelecer um limiar para a densidade da borda. (Eu usei 0,5)

enter descrição da imagem aqui

  1. Blur as regiões detectadas.

enter descrição da imagem aqui

Você pode aplicar outros filtros que você considera adequado para aumentar recall e precisão. A detecção também pode ser treinado usando HOG + SVM para aumentar a precisão.

Há uma biblioteca de código aberto novo no GitHub que faz ANPR para placas norte-americanos e europeus. Parece bastante precisa e deve fazer exatamente o que você precisa (reconhecer as regiões placa). Aqui está o projeto GitHub: https://github.com/openalpr/openalpr

me deparei com este que é escrito em java javaANPR , eu estou procurando ac # biblioteca também.

Eu gostaria de um sistema onde eu posso apontar uma câmera de vídeo em alguns barcos à vela, todos os quais têm números grandes, identificáveis ??sobre eles, e tê-lo a identificar os barcos e enviar um tweet quando eles navegam passado uma câmera de vídeo.

Tenho feito algumas googling sobre este um par de meses atrás. Há muito poucos papéis sobre este tópico, mas eu nunca encontrado qualquer implementação de código aberto concreto. Há um monte de implementações comerciais embora, mas nenhum deles com uma cotação de preço, por isso eles são provavelmente muito caro.

tentar este simples chapa de matrícula Reconhecimento Automático do Sistema

http://opos.codeplex.com/

Open source e escrito com C #

Tenha um olhar em Java ANPR . reconhecimento da matrícula livre ...

Sim eu uso gocr em http://jocr.sourceforge.net/ sua aplicação uma linha de comando que você pode executar a partir da aplicação. Eu usá-lo em um par de minhas aplicações.

alto desempenho ANPR Biblioteca - http://www.dtksoft.com/dtkanpr.php. Esta é comercial, mas eles fornecem chave de avaliação.

É talvez trabalhar olhando para software recoqnition Character, pois há muitas bibliotecas lá fora que executam a mesma coisa. I ler uma imagem e armazená-la. escritório Micrsoft é capaz de ler arquivos TIFF e retornar alphanumerics

A indefinição não é um problema, mas existe uma biblioteca ou componente (open source de preferência) que irão ajudar a encontrar uma licença dentro de uma foto?

Ans: O CARMEN FreeFlow ANPR Software motor (Comercial)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top