0

scanimageスキャナの OHP ユニットからフィルムをスキャンするために、Sane のコマンド ライン ユーティリティ ( ) を使用しています。これが私が成功して使用しているコマンドです:

scanimage --device-name pixma:04A9190D \
--source 'Transparency Unit' \
--resolution "4800" \
--format "tiff" \
--mode "color" \
-l "80.6" -x "56.2" -t "25.8" -y "219.2" \
> scan.tiff

pyinsane画像処理ワークフローとさらに統合できるようにするために、これを Python コードに移行することにしました。これにより、Pythonコードで次のようになるはずです。

import pyinsane.abstract as pyinsane
device = pyinsane.get_devices()[0]

device.options['resolution'].value = 4800
device.options['mode'].value = 'Color'
device.options['source'].value = 'Transparency Unit'

# Setting coordinates to non-integers fails
device.options['tl-y'].value = 25.8
device.options['tl-x'].value = 80.6
device.options['br-y'].value = 219.2
device.options['br-x'].value = 56.2

scan_session = device.scan(multiple=False)
try:
    while True:
        scan_session.scan.read()
except EOFError:
    pass
image = scan_session.images[0]

しかし、スキャン座標の設定方法がわからないため、最初の試みはうまくいきませんでしたpyinsane。ご覧のとおり、適切なオプションを見つけましたが、それらの単位がわかりません。scanimageデフォルトでは、座標はミリメートル単位ですが、pyinsane整数のみを取ります。ピクセル座標を使用してみましたが、役に立ちませんでした。座標パラメータの単位と、それらを正しい順序で使用しているかどうか疑問に思います。

4

2 に答える 2

0

Pyinsane は、Sane が報告する内容をそのまま報告します。そしてSaneは、ドライバーが報告したことを報告します。私の経験では、すべてのドライバーがまったく同じように動作するわけではありません。以前は、ユニットについてあまり心配していませんでした。時間があるときにスキャナーで何が表示されるかを確認します..

とにかく、私の経験では、ここでの単位は実際には常にピクセルであるため、なぜ「mm」と表示されるのかわかりません(ドキュメントには「mm」になる可能性があるため、確認する必要があります)。特定のサイズをスキャンしたい場合は、解像度 (1 インチあたりのドット数) を調べてから、予想されるサイズをピクセル単位で計算する必要があります。

于 2016-10-07T14:31:06.510 に答える