포토모자이크는 이미지를 정사각형 격자로 분할할 수 있는 기술입니다. 각 사각형은 다른 이미지나 색상으로 대체됩니다. 그래서 특정 거리에서 실제 이미지를 보고 싶을 때는 실제 이미지를 볼 수 있지만 가까이 다가가면 서로 다른 색상의 블록 격자를 볼 수 있습니다.
이 경우 우리는 photomosaic이라는 Python 모듈을 사용하고 있습니다. 이 모듈을 사용하여 포토모자이크를 쉽게 만들 수 있습니다. 설치하려면 이 링크를 따르십시오. cikit Learn도 다운로드됩니다. 모듈.
sudo pip3 install photomosaic
이 모듈에는 몇 가지 기능이 있습니다. 아래에 나열되어 있습니다 -
- 여기서 다양한 크기의 타일을 사용할 수 있습니다.
- 이미지의 세부적인 부분에 대해 더 작은 타일을 설정할 수 있습니다.
- 플리커 API를 사용하여 타일로 사용할 대규모 이미지 모음 가져오기
이 기사에서는 포토모자이크용 이 모듈을 매우 간단한 방법으로 구현하는 방법을 살펴보겠습니다.
skimage 라이브러리의 이미지를 사용하고 있습니다.
메인 이미지
<중앙>포토모자이크를 만드는 단계
- 실제 이미지 가져오기(skimage 라이브러리에서 가져온 이미지)
- 격자 타일 크기 정의
- 풀로 다채로운 RGB 이미지 블록을 생성할 위치 제공
- 포토모자이크용 풀로 폴더 설정
- 수영장과 격자 크기를 사용하여 포토 모자이크로 변환합니다.
- 이미지 저장
- 종료
예시 코드
from skimage.io import * import sys import photomosaic asphmos from skimage import data image = data.coffee() #Get coffee image from skimage #Get the mosaic size from the command line argument. mos_size = (int(sys.argv[1]), int(sys.argv[2])) #create all image squares and generate pool phmos.rainbow_of_squares('square/') square_pool = phmos.make_pool('square/*.png') #Create the mosaic image and save mosaic = phmos.basic_mosaic(image, square_pool, mos_size) imsave('mosaic_op.png', mosaic)
출력(첫 실행, 그리드 크기는 100 x 100)
$ python3 225.Photomosaic.py 100 100 5832it [00:02, 2506.05it/s] analyzing pool: 100%|| 5832/5832 [00:08<00:00, 717.90it/s] /usr/local/lib/python3.6/dist-packages/skimage/transform/_warps.py:105: UserWarning: The default mode, 'constant', will be changed to 'reflect' in skimage 0.15. warn("The default mode, 'constant', will be changed to 'reflect' in " /usr/local/lib/python3.6/dist-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images. warn("Anti-aliasing will be enabled by default in skimage 0.15 to " partitioning: depth 0: 100%|| 10000/10000 [00:00<00:00, 852292.94it/s] analyzing tiles: 100%|| 10000/10000 [00:00<00:00, 93084.50it/s] matching: 100%|| 10000/10000 [00:00<00:00, 30864.50it/s] drawing mosaic: 100%|| 10000/10000 [00:00<00:00, 13227.12it/s] /usr/local/lib/python3.6/dist-packages/skimage/util/dtype.py:141: UserWarning: Possible precision loss when converting from float64 to uint8 .format(dtypeobj_in, dtypeobj_out))<중앙>
출력(두 번째 실행, 그리드 크기는 500 x 500)
$ python3 225.Photomosaic.py 500 500 5832it [00:02, 2634.16it/s] analyzing pool: 100%|| 5832/5832 [00:08<00:00, 709.54it/s] /usr/local/lib/python3.6/dist-packages/skimage/transform/_warps.py:105: UserWarning: The default mode, 'constant', will be changed to 'reflect' in skimage 0.15. warn("The default mode, 'constant', will be changed to 'reflect' in " /usr/local/lib/python3.6/dist-packages/skimage/transform/_warps.py:110: UserWarning: Anti-aliasing will be enabled by default in skimage 0.15 to avoid aliasing artifacts when down-sampling images. warn("Anti-aliasing will be enabled by default in skimage 0.15 to " partitioning: depth 0: 100%|| 250000/250000 [00:00<00:00, 456159.45it/s] analyzing tiles: 100%|| 250000/250000 [00:02<00:00, 113937.01it/s] matching: 100%|| 250000/250000 [00:07<00:00, 32591.43it/s] drawing mosaic: 100%|| 250000/250000 [00:02<00:00, 104349.90it/s] /usr/local/lib/python3.6/dist-packages/skimage/util/dtype.py:141: UserWarning: Possible precision loss when converting from float64 to uint8 .format(dtypeobj_in, dtypeobj_out))<중앙>