Je dois augmenter la résolution de mon image avant d'être lue par ocr avec opencv. le problème sont:
je recherche dans google, et presque chaque réponse suggère d'utiliser resize
cv2.resize()
image = cv2.imread("source.png")
resized_image = cv2.resize(image, (100, 50)) #I need to change it to 300 DPI
resize
uniquement pour changer la taille de l'image, mais après tout, n'augmente pas la résolution en images, car j'ai essayé de l'utiliser, et lors de l'enregistrement dans Photoshop, la résolution n'est pas modifiée
montrer s'il vous plaît aidez-moi pour que 2 questions
comment le faire avec opencv?
honnêtement, je dois changer le dpi à 300, pourquoi dois-je savoir le dpi actuel? parce que si c'est déjà dpi > 300
, je n'ai donc pas besoin de le convertir.
oya je le fais avec du python
Le dpi est juste un nombre dans l'en-tête JPEG/TIFF/PNG. Cela n'a aucune importance pour le monde et son chien jusqu'à ce que vous imprimiez l'image, puis cela détermine la taille de l'impression en donnant les dimensions de l'image en pixels.
Pendant le traitement de l'image, cela n'a aucune importance. La seule chose intéressante est le nombre de pixels que vous avez. C’est le déterminant ultime de la qualité de l’image ou du contenu de l’information - comme vous voulez le décrire.
Je ne crois pas que vous puissiez le configurer avec OpenCV . Vous pouvez certainement le définir avec ImageMagick comme ceci dans le Terminal:
mogrify -set density 300 *.png # v6 ImageMagick
magick mogrify -set density 300 *.png # v7 ImageMagick
Vous pouvez le vérifier avec:
identify -format "Density: %x x %y" SomeImage.jpg # v6 ImageMagick
magick identify -format ... as above # v7 ImageMagick
Vous pouvez faire la même chose avec exiftool
dans Terminal - notez que exiftool
est BEAUCOUP plus petit et plus facile à gérer que ImageMagick car c'est "juste" un seul script (très capable) Perl:
Extraire la résolution de l'image à partir des informations EXIF IFD1:
exiftool -IFD1:XResolution -IFD1:YResolution image.jpg
Extrayez toutes les balises dont le nom contient le mot "Résolution" d'une image |:
exiftool '-*resolution*' image.jpg
Définissez la résolution X/Y (densité) sur image.jpg
:
exiftool -xresolution=300 -yresolution=300 image.jpg
Voici une petite démonstration de ce que je veux dire au début de ma réponse ...
Utilisez ImageMagick pour créer une image 1024x768 sans information dpi:
convert -size 1024x768 xc:black image.jpg
Maintenant examinez-le:
identify -verbose image.jpg
Image: image.jpg
Format: JPEG (Joint Photographic Experts Group JFIF format)
Mime type: image/jpeg
Class: PseudoClass
Geometry: 1024x768+0+0
Units: Undefined
Colorspace: Gray
Type: Bilevel
...
...
Maintenant, changez le dpi, définissez les unités dpi et examinez-le à nouveau:
mogrify -set density 300 -units pixelsperinch image.jpg # Change dpi
identify -verbose image.jpg # Examine
Image: image.jpg
Format: JPEG (Joint Photographic Experts Group JFIF format)
Mime type: image/jpeg
Class: PseudoClass
Geometry: 1024x768+0+0 <--- Number of pixels is unchanged
Resolution: 300x300 <---
Print size: 3.41333x2.56 <--- Print size is now known
Units: PixelsPerInch <---
Colorspace: Gray
Type: Bilevel
...
...
Et maintenant, vous pouvez voir que, tout à coup, nous savons à quel point une impression sera imprimée et que le nombre de pixels n’a pas changé.
Le DPI est une propriété héritée du périphérique graphique - moniteur, scanner, appareil photo, etc. Par exemple - disons que nous numérisons des images et que nous souhaitons obtenir des images de meilleure qualité - nous définissons donc une valeur DPI supérieure dans les options du scanner. S'il n'y a pas de meilleure option DPI, nous devons donc acheter un meilleur scanneur prenant en charge davantage de résolutions de numérisation. Il existe des dispositifs/méthodes en mesure d'atteindre 100 000 DPI