Computer >> Máy Tính >  >> Lập trình >> Python

Triển khai Photomosaics bằng Python

Photomosaic là một kỹ thuật, nơi chúng ta có thể chia hình ảnh của mình thành một lưới các ô vuông. Mỗi ô vuông sẽ được thay thế bằng một số hình ảnh hoặc màu sắc khác. Vì vậy, khi chúng ta muốn xem hình ảnh thực tế từ một khoảng cách nhất định, chúng ta có thể nhìn thấy hình ảnh thực tế, nhưng nếu chúng ta lại gần hơn, chúng ta có thể thấy lưới các khối màu khác nhau.

Trong trường hợp này, chúng tôi đang sử dụng một mô-đun Python có tên là photomosaic. Sử dụng mô-đun này, chúng ta có thể dễ dàng tạo ra một số photomosaics. Để cài đặt nó, vui lòng theo liên kết này. Nó cũng sẽ tải xuống scikit learning mô-đun.

sudo pip3 install photomosaic

Mô-đun này có một số tính năng. Chúng được liệt kê bên dưới -

  • Tại đây, chúng tôi có thể sử dụng các kích thước ô khác nhau.
  • Chúng tôi có thể đặt các ô nhỏ hơn cho phần chi tiết của hình ảnh.
  • Sử dụng api nhấp nháy để có được bộ sưu tập lớn hình ảnh để sử dụng làm ô xếp

Trong bài viết này, chúng ta sẽ thấy cách triển khai mô-đun này cho photomosaics một cách rất đơn giản.

Chúng tôi đang sử dụng hình ảnh từ thư viện ảnh lướt qua.

Hình ảnh chính

Triển khai Photomosaics bằng Python

Các bước tạo photomosaic

  • Chụp hình ảnh thực tế (đây là hình ảnh từ thư viện ảnh lướt qua)
  • xác định kích thước ô lưới
  • Cung cấp vị trí để tạo các khối hình ảnh RGB đầy màu sắc dưới dạng nhóm
  • Đặt thư mục làm Pool cho photomosaic
  • Biến thành photomosaic bằng cách sử dụng nhóm và kích thước lưới.
  • Lưu hình ảnh
  • thoát

Mã mẫu

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)

Đầu ra (Lần chạy đầu tiên, Kích thước lưới là 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))
Triển khai Photomosaics bằng Python

Đầu ra (Lần chạy thứ hai, Kích thước lưới là 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))
Triển khai Photomosaics bằng Python