我使用 Sane 的命令行实用程序 ( scanimage
) 来从我的扫描仪的透明单元扫描胶片。这是我一直在成功使用的命令:
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
我决定将其移至 Python 代码,pyinsane
以便与我的图像处理工作流程进一步集成。这应该在 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
只接受整数。我尝试使用像素坐标无济于事。我想知道坐标参数采用什么单位,以及我是否以正确的顺序使用它们。