2016-12-18 5 views
0

거대한 수집 (수만 장의 이미지)에서 깨진 이미지 파일을 감지 할 방법이 필요합니다.거대한 수집에서 잘못된 이미지 찾기

try: 
    im = PIL.Image.open(f) 
    # image valid 
except: 
    # image invalid 
    ... 

그러나 그것은 너무 느린 : 지금 그것을 할 방법은 다음과 같이 PIL을 사용하는 것입니다. 모든 파일을 확인하는 데 몇 시간이 걸릴 것입니다.

파이썬을 통해 폴더의 모든 잘못된 이미지를 빠르게 찾을 수 있습니까?

imghdr은 불충분하게도 잘리지 않는 것은 잘라 내기 이미지를 감지하지 못하기 때문입니다.

+0

이미지 데이터가 잘리는 지 확인하기 위해 파일을 열어야합니다. – jonrsharpe

+0

그래, 그런 것 같아. 그러나 디코딩 오버 헤드가 적고 Image.open 중에 수행되는 다른 작업이있을 것이라고 생각했습니다. –

+0

다른 옵션 : http://photo.stackexchange.com/questions/46919/is-there-a-tool-to -check-the-file-of-a-series-of-images – Hugo

답변

1

질문에서 함수로 코드를 래핑하여 속도를 향상시킬 수 있습니다. 그런 다음 테스트 할 모든 파일 이름 목록을 작성하고 multiprocessing 모듈의 Pool.map을 사용하여 시스템과 동일한 수의 코어를 사용하는 모든 파일에이 기능을 병렬로 적용하십시오.

컴퓨터에 N 코어가있는 경우 N 속도 향상 요인이 될 수 있습니다. 실제로는 multiprocessing 오버 헤드와 I/O 대역폭 제한으로 인해 더 적습니다.