Я не знаю о существовании какого-либо инструмента командной строки для этого, но было бы довольно тривиально написать свой собственный, используя numpy
.Основная процедура будет такой:
- Поместите простое изображение загрузки крышки сканера в
ndarray
. - Загрузите каждую фотографию / изображение в массиве.
- Сравните значительную часть из двух и назначьте оценку.
- Если оценка выше вашего порога ...
Если производительность является проблемой, шаг № 2 может быть оптимизированперемещаясь по файлу с seek()
и читая только его части, чтобы ускорить процесс.
Реализация концепции numpy
part:
>>> import numpy as np
>>> scanner_lid = np.ones((5, 5))
>>> scanner_lid
array([[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]])
>>> photo = np.random.randint(0, 2, (5, 5))
>>> photo
array([[0, 0, 1, 1, 0],
[0, 1, 1, 1, 0],
[0, 0, 1, 1, 1],
[1, 1, 0, 0, 1],
[1, 0, 1, 1, 1]])
>>> matching_pixels = scanner_lid[0:2, 0:2] == photo[0:2, 0:2] #compare the top-left 4 pixels
>>> matching_pixels
array([[False, False],
[False, True]], dtype=bool)
>>> np.sum(matching_pixels)
1
OfКонечно, в реальных приложениях вам, вероятно, следует измерить разницу между значениями пикселей, поскольку интенсивность и цветовой баланс могут изменяться от сканирования к сканированию и т. д. Однако, я думаю, что на это не потребуется много времени, чтобы придуматьчто-то пригодное для вашей работы.
HTH!