[파이썬] Pillow 이미지의 시각적 해시 생성하기
이미지 해싱은 이미지를 고유하게 식별하기 위해 사용되는 기술입니다. 시각적 해싱은 이미지의 시각적 부분을 가져와 해시를 생성하는 기법입니다. 이 기술은 이미지의 유사성을 비교하거나 유해한 이미지를 탐지하는 데 사용될 수 있습니다.
이 튜토리얼에서는 Python의 Pillow
라이브러리를 사용하여 이미지의 시각적 해시를 생성하는 방법에 대해 알아보겠습니다.
Pillow 라이브러리 설치하기
Pillow는 Python에서 이미지 처리를 위한 강력한 라이브러리입니다. 다음 명령을 사용하여 Pillow를 설치하세요:
pip install Pillow
이미지 해시 생성 코드 구현하기
다음은 Pillow
를 사용하여 이미지의 시각적 해시를 생성하는 간단한 코드입니다:
from PIL import Image
def visual_hash(image_path, hash_size=8):
# 이미지 열기
image = Image.open(image_path)
# 이미지 리사이징
image = image.resize((hash_size, hash_size))
# 이미지를 그레이스케일로 변환
image = image.convert("L")
# 픽셀 값 가져오기
pixels = list(image.getdata())
# 픽셀 값을 이진 문자열로 변환
binary_hash = "".join(["1" if pixel > 128 else "0" for pixel in pixels])
# 해시 값 반환
return binary_hash
위 코드는 다음 단계를 수행합니다:
Pillow
를 import합니다.visual_hash
함수를 정의합니다. 이 함수는 이미지 파일 경로와 해시 크기를 입력으로 받습니다.- 이미지를 열고, 리사이즈하고, 그레이스케일로 변환합니다.
- 픽셀 값을 가져와 이진 문자열로 변환합니다. 여기서는 픽셀 값이 128보다 크면 1, 작으면 0으로 변환됩니다.
- 이진 해시 값을 반환합니다.
코드 사용 예시
이제 위에서 구현한 visual_hash
함수를 사용해보겠습니다:
image_path1 = "image1.jpg"
image_path2 = "image2.jpg"
hash1 = visual_hash(image_path1)
hash2 = visual_hash(image_path2)
if hash1 == hash2:
print("두 이미지는 동일한 시각적 해시를 가집니다.")
else:
print("두 이미지는 다른 시각적 해시를 가집니다.")
위 코드는 image1.jpg
와 image2.jpg
두 이미지의 시각적 해시를 비교하고, 해시가 동일한지를 확인합니다.
이제 Pillow
를 사용하여 이미지의 시각적 해시를 생성하는 방법을 알게 되었습니다. 이를 활용하여 이미지 유사성 비교, 유해한 이미지 탐지 등 다양한 응용 프로그램을 개발할 수 있습니다.