web-dev-qa-db-fra.com

comment augmenter les dpi avec opencv?

Je dois augmenter la résolution de mon image avant d'être lue par ocr avec opencv. le problème sont:

  1. Je ne connais pas mon image dpi pour le moment
  2. et je ne sais pas comment augmenter la résolution de l'image

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

4
yozawiratama

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é.

2
Mark Setchell

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

0