[PYTHON] J'ai essayé de numériser le tampon estampé sur papier en utilisant OpenCV

Motive Il existe des endroits où vous pouvez tamponner votre sceau sur une feuille ou un mot Excel. Si c'est un document un peu important, je veux parfois utiliser le même certificat de sceau enregistré à la mairie, mais avant, j'ai imprimé le papier au dépanneur une fois, je l'ai tamponné, scanné à nouveau et soumis au format pdf. était en train de faire.

Je faisais beaucoup de traitement analogique, mais je pensais que si je pouvais imaginer le sceau et le coller sur la feuille, je n'aurais pas à aller au dépanneur.

Au début, j'ai pris une photo du sceau et essayé de rendre la couleur d'arrière-plan transparente à l'aide de PowerPoint ou d'un outil d'édition d'image gratuit, mais j'ai abandonné car je ne pouvais pas tout convertir en fonction de la qualité du papier.

Donc, après essais et erreurs, j'ai écrit quelques lignes de traitement d'image avec OpenCV et résolu le problème, je vais donc le laisser en mémoire.

Dataset J'ai utilisé l'échantillon de sceau de Axea. ieyasu.jpg

Method

  1. Binarisation + inversion d'image
  2. Masquage avec l'image d'origine et 1 image
  3. Image d'arrière-plan transparente (valeur α 100%)

Development

import cv2
import sys
import numpy as np

if __name__ == '__main__':

	if len(sys.argv) != 2:
		sys.exit()

	window_name = "sample"
	img_path = sys.argv[1]

	mat = cv2.imread(img_path)
	gray = cv2.cvtColor(mat, cv2.COLOR_BGR2GRAY)
	cv2.imwrite("gray.png ", gray)

	#Binarisation
	ret2, mono = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY_INV) 
	cv2.imwrite("mono.png ", mono)

	#Processus de masquage
	dst = cv2.bitwise_and(mat,mat,mask=mono)
	cv2.imwrite("dst.png ", dst)

	#canal 3->Changer en 4
	alpha = cv2.cvtColor(dst, cv2.COLOR_BGR2BGRA)

	#Seul le fond noir est transparent
	for i,col in enumerate(dst):
		for j,row in enumerate(col):
			color = dst[i][j]
			if (color == np.array([0,0,0])).all():
				alpha[i][j][3] = 0

	cv2.imshow(window_name, alpha)
	cv2.imwrite("out.png ", alpha)
	cv2.waitKey(0)
	cv2.destroyWindow(window_name)

Cette fois, les données d'image traitées à mi-chemin sont également sorties.

Result

Flux de traitement output
données brutes ieyasu.jpg
Noir et blanc gray.png
Binarisation+Inverser mono.png
masquage dst.png
Transparence de la couleur d'arrière-plan
(Sortie de traitement)
out.png

Future La transparence d'arrière-plan peut être facilement créée en utilisant cv2.bitwise_and. S'il semble que cela prendra du temps pour utiliser l'outil, celui-ci semble être meilleur.

Reference

Recommended Posts

J'ai essayé de numériser le tampon estampé sur papier en utilisant OpenCV
J'ai essayé d'utiliser le filtre d'image d'OpenCV
J'ai essayé d'approcher la fonction sin en utilisant le chainer
J'ai essayé de devenir un Ann Man en utilisant OpenCV
J'ai essayé d'identifier la langue en utilisant CNN + Melspectogram
J'ai essayé de compléter le graphe de connaissances en utilisant OpenKE
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
J'ai essayé de simuler l'optimisation des publicités à l'aide de l'algorithme Bandit
J'ai essayé d'utiliser "Syncthing" pour synchroniser des fichiers sur plusieurs PC
[TF] J'ai essayé de visualiser le résultat de l'apprentissage en utilisant Tensorboard
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
J'ai essayé de lancer le cluster ipython au minimum sur AWS
J'ai essayé d'approcher la fonction sin en utilisant chainer (re-challenge)
J'ai essayé de sortir le journal d'accès au serveur en utilisant Node.js
J'ai essayé d'utiliser GrabCut d'OpenCV
J'ai essayé de déplacer le ballon
J'ai essayé d'utiliser l'API checkio
J'ai essayé d'estimer la section.
J'ai essayé d'obtenir l'index de la liste en utilisant la fonction énumérer
J'ai essayé de traiter l'image en "style croquis" avec OpenCV
J'ai essayé d'utiliser l'API COTOHA (il y a aussi du code sur GitHub)
J'ai essayé d'afficher le temps de lecture de la vidéo (OpenCV: version Python)
J'ai essayé d'enregistrer une station sur la plateforme IoT "Rimotte"
J'ai essayé de démarrer avec Bitcoin Systre le week-end
J'ai essayé de visualiser les données BigQuery à l'aide de Jupyter Lab avec GCP
J'ai essayé de traiter l'image dans un "style de dessin au crayon" avec OpenCV
J'ai essayé d'utiliser Azure Speech to Text.
J'ai essayé de résumer la commande umask
J'ai essayé de reconnaître le mot de réveil
J'ai essayé de classer le texte en utilisant TensorFlow
J'ai essayé de résumer la modélisation graphique.
J'ai essayé d'estimer le rapport de circonférence π de manière probabiliste
J'ai essayé de toucher l'API COTOHA
[Python] J'ai essayé de créer un programme simple qui fonctionne sur la ligne de commande en utilisant argparse
J'ai essayé d'utiliser l'API BigQuery Storage
J'ai essayé de transformer l'image du visage en utilisant sparse_image_warp de TensorFlow Addons
[Python] J'ai essayé de visualiser la nuit du chemin de fer de la galaxie avec WordCloud!
J'ai essayé d'obtenir les résultats de Hachinai en utilisant le traitement d'image
J'ai essayé d'utiliser jpholidayp sur proxy pour exécuter cron uniquement en semaine
J'ai essayé d'estimer la similitude de l'intention de la question en utilisant Doc2Vec de gensim
Je souhaite afficher une image sur Jupyter Notebook à l'aide d'OpenCV (mac)
J'ai essayé de contrôler plusieurs servomoteurs MG996R en utilisant le servomoteur PCA9685.
Touches de karaoké assorties ~ J'ai essayé de le mettre sur Laravel ~ <en route>
J'ai essayé de résumer diverses phrases à l'aide de l'API de synthèse automatique "summpy"
J'ai essayé d'extraire et d'illustrer l'étape de l'histoire à l'aide de COTOHA
J'ai essayé avec les 100 meilleurs packages PyPI> J'ai essayé de représenter graphiquement les packages installés sur Python
J'ai essayé l'histoire courante de l'utilisation du Deep Learning pour prédire la moyenne Nikkei
En utilisant COTOHA, j'ai essayé de suivre le cours émotionnel de la course aux meros.
J'ai essayé d'analyser la carte du Nouvel An par moi-même en utilisant python
J'ai essayé de "lisser" l'image avec Python + OpenCV
J'ai essayé Web Scraping pour analyser les paroles.
J'ai essayé d'utiliser l'API à distance avec GAE / J
vprof - J'ai essayé d'utiliser le profileur pour Python
J'ai essayé de "différencier" l'image avec Python + OpenCV
J'ai essayé d'optimiser le séchage du linge
J'ai essayé la détection d'objets en utilisant Python et OpenCV
J'ai essayé de sauvegarder les données avec discorde
J'ai essayé de détecter rapidement un mouvement avec OpenCV