Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การใช้ Photomosaics ใน Python


photomosaic เป็นเทคนิคที่เราสามารถแบ่งรูปภาพของเราออกเป็นตารางสี่เหลี่ยม แต่ละช่องจะถูกแทนที่ด้วยรูปภาพหรือสีอื่นๆ ดังนั้นเมื่อเราต้องการดูภาพจริงจากระยะไกล เราจะเห็นภาพจริง แต่ถ้าเข้าไปใกล้ๆ เราจะเห็นตารางของบล็อกสีต่างๆ

ในกรณีนี้ เรากำลังใช้โมดูล Python ที่เรียกว่า photomosaic ด้วยการใช้โมดูลนี้ เราสามารถสร้างโฟโตโมเสกได้อย่างง่ายดาย หากต้องการติดตั้งโปรดไปที่ลิงค์นี้ นอกจากนี้ยังจะดาวน์โหลด scikit เรียนรู้ โมดูล

sudo pip3 install photomosaic

โมดูลนี้มีคุณสมบัติบางอย่าง ดังต่อไปนี้ -

  • ที่นี่เราสามารถใช้กระเบื้องที่มีขนาดต่างกันได้
  • เราสามารถตั้งค่าชิ้นส่วนที่เล็กลงสำหรับรายละเอียดของภาพได้
  • ใช้ Flicker api เพื่อรับคอลเล็กชันรูปภาพจำนวนมากเพื่อใช้เป็นไทล์

ในบทความนี้ เราจะมาดูวิธีการใช้โมดูลนี้สำหรับโฟโตโมเสกในวิธีที่ง่ายมาก

เรากำลังใช้รูปภาพจากไลบรารี skimage

ภาพหลัก

การใช้ Photomosaics ใน Python

ขั้นตอนในการสร้างโฟโตโมเสก

  • ถ่ายภาพจริง (นี่คือภาพจากไลบรารี skimage)
  • กำหนดขนาดไทล์กริด
  • ระบุตำแหน่งเพื่อสร้างบล็อกภาพ RGB ที่มีสีสันเป็นพูล
  • ตั้งค่าโฟลเดอร์เป็น Pool สำหรับโฟโตโมเสก
  • เปลี่ยนเป็นโฟโตโมเสกโดยใช้พูลและขนาดกริด
  • บันทึกภาพ
  • ทางออก

โค้ดตัวอย่าง

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))
การใช้ Photomosaics ใน Python

เอาต์พุต (เรียกใช้ครั้งที่สอง ขนาดกริดคือ 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))
การใช้ Photomosaics ใน Python