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.
Method
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 | |
Noir et blanc | |
Binarisation+Inverser | |
masquage | |
Transparence de la couleur d'arrière-plan (Sortie de traitement) |
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