opencvでdpiを上げるには?

opencvでOCRで読み込む前に、画像のdpiを上げる必要があります。

1.自分の画像のdpiがわからない 2. 画像のdpiを上げる方法がわからない。

Googleで検索してみると、ほとんどの回答が resize を使うことを勧めています。

image = cv2.imread("source.png")
resized_image = cv2.resize(image, (100, 50)) #I need to change it to 300 DPI

リサイズは画像の大きさを変えるだけで、結局dpiを上げることはないのです、なぜなら使ってみて、フォトショップで確認するとdpiは変わっていなかったからです

この2つの質問について、どうかご教示ください。

opencvでどのように行うか?

正直なところ、私はdpiを300に変更する必要があるのですが、なぜ現在のdpiを知る必要があるのでしょうか?なぜなら、すでにdpi > 300であれば、それを変換する必要はありません。

pythonでやってます。

dpiはJPEG/TIFF/PNGのヘッダーに記載されている数字に過ぎません。画像を印刷するまでは、世界とその犬には全く関係のないもので、画像の寸法がピクセル単位であれば、印刷の大きさが決まります。

画像処理中は関係ありません。興味があるのは、持っている画素数だけです。画質や情報量を決定するのは画素数です。

OpenCVで設定できるとは思えません。ImageMagickではターミナルでこのように設定することができます。

mogrify -set density 300 *.png           # v6 ImageMagick
magick mogrify -set density 300 *.png    # v7 ImageMagick

で確認できます。

identify -format "Density: %x x %y" SomeImage.jpg    # v6 ImageMagick
magick identify -format ... as above                 # v7 ImageMagick

ターミナルで exiftool を使えば同様のことができます - exiftool"just" 1 つの Perl スクリプトなので ImageMagick よりもはるかに小さく、メンテナンスが簡単なことに注意してください。

EXIF IFD1 情報から画像の解像度を抽出する。

exiftool -IFD1:XResolution -IFD1:YResolution image.jpg

画像から "Resolution"という単語を含む名前のタグをすべて抽出します。

exiftool '-*resolution*' image.jpg

image.jpg に X/Y 解像度(密度)を設定します。

exiftool -xresolution=300 -yresolution=300 image.jpg

ここで、私の答えの冒頭の意味を少し実演してみましょう・・・。

ImageMagick** を使って、dpi 情報のない 1024x768 の画像を作成します。

convert -size 1024x768 xc:black image.jpg

では、それを検証してみましょう。

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

今度はdpiを変更し、dpiの単位を設定し、再度検証してください。


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            
解説 (10)

古い記事ですが、テッセラクトは文字の高さを30ピクセル程度にするとより良く動作することがテストされ、判明していますことをお伝えしたいと思います。以下のリンクからご確認ください。

解説 (1)

DPIは、モニタ、スキャナ、カメラなどのグラフィックデバイスに継承されるプロパティです。例えば、画像をスキャンする場合、より良い品質の画像を得たいので、スキャナオプションでDPI値を高く設定するとします。より良いDPIオプションがない場合、より多くのスキャン解像度をサポートする、より良いスキャナを購入する必要があります。100 000 DPI]1を達成できるデバイス/方法があります。

解説 (1)