openCV Advanced II: calibre automáticamente las imágenes escaneadas para generar una vista aérea
Los pasos de implementación son en realidad muy simples y solo requieren tres pasos:
El primer paso: encontrar el borde del documento
El segundo paso: buscar el borde del documento a través del contorno del borde y encuentre las coordenadas de los cuatro puntos de las esquinas
Paso 3: use la función de conversión de perspectiva para completar la conversión de la imagen
El siguiente código se basa en la versión openCV/python: openCV2.4/3 +, python2.7/3+
En la sección anterior, completamos la construcción del módulo transform.py. Usaremos este módulo en todos. Problemas posteriores relacionados con el procesamiento de puntos cuadriláteros de imágenes. Abra el editor de Python, cree un nuevo documento y asígnele el nombre scan.py.
El siguiente es el primer paso: búsqueda de borde:
Resultados de la prueba:
shell
Aunque el fondo está un poco sucio, el document Los bordes aún son obvios, así que veamos cómo encontrar los bordes del documento y generar el contorno.
Paso 2: Buscar esquemas:
De hecho, existe una premisa muy importante a la hora de construir un escáner de documentos: el escáner solo escanea una hoja de papel. Suponemos que una hoja de papel es un rectángulo y que un rectángulo tiene cuatro lados. Por lo tanto, podemos crear un método simple que nos ayude a construir un escáner de documentos. Suponiendo que el contorno más grande de la imagen tenga exactamente cuatro puntos, este es el papel que queremos escanear. Esta también es una suposición bastante segura; por supuesto, al documento también se le puede dar un esquema artificial.
Ejecute un fragmento de código para probar los resultados: escriba shell
Como puede ver, hemos encontrado con éxito el contorno (outline) del documento utilizando la detección de bordes en la imagen, el Color verde alrededor de mi recibo. El rectángulo muestra el contorno. Finalmente, pasemos al paso 3, que utiliza la función four_point_transform.
Paso 3: Transformar la imagen: El último paso en la construcción de un escáner de documentos móvil es tomar cuatro puntos que representan el contorno del documento y aplicar una transformación de perspectiva para dar una vista "a vista de pájaro" del documento. imagen de arriba a abajo.
Pasaremos dos parámetros a four_point_transform: el primer parámetro es la imagen original que cargamos desde el disco (no la imagen ajustada), y el segundo parámetro es el contorno que representa el documento multiplicado por el ajuste La proporción después.
Quizás te preguntes, ¿por qué multiplicar por el ratio ajustado? La razón por la que estamos multiplicando por la escala redimensionada es porque realizamos la detección de bordes y encontramos contornos en la imagen redimensionada con una altura = 500 píxeles. Sin embargo, estamos escaneando la imagen original, no la imagen ajustada, por lo que multiplicamos los puntos del contorno por la escala ajustada.
Para darle a la imagen una sensación de blanco y negro, convertimos la imagen distorsionada a escala de grises y aplicamos umbrales adaptativos.
Ok, ejecutemos el efecto:
shell
Ok, hasta ahora, la implementación de escanear una imagen en un documento para extraer una vista aérea ha Finalizar. Problemas pendientes:
De hecho, todavía hay muchas áreas que se pueden mejorar en este programa. Por ejemplo, se requiere que el documento convertido sea un cuadrilátero normal. Al disparar, intente tener un contraste obvio en el escritorio. fondo El propósito de esto es Para evitar la situación de más de cuatro bordes durante la búsqueda de bordes, los bordes con más de cuatro bordes causarán problemas en búsquedas de contorno posteriores. En otras palabras, no puedes encontrar cuatro bordes adecuados que coincidan.
Solución: Puedes extraer el contorno marcando manualmente las cuatro esquinas, lo cual es más confiable. Porque en escenarios de aplicaciones reales, los documentos suelen ser irregulares. En la siguiente sección, exploraremos la implementación de esta solución.