通過PYTHON來實現(xiàn)圖像分割詳解
程序思路:
此次程序主要是利用PIL(Python Image Libraty)這庫,來進(jìn)行圖片的處理。
PIL是一個功能非常強(qiáng)大的python圖像處理標(biāo)準(zhǔn)庫,但由于PIL只支持python2.7。如今很多python程序員都使用python3.x,所以PIL在之前的基礎(chǔ)上分離出來一個分支,另外創(chuàng)建一個Pillow庫,以便支持python3.x, 本程序在使用之前確保已經(jīng)安裝了Pillow庫。
程序首先把你要分隔的圖像讀取到一個變量中,然后我們定義了一個 fill_image() 方法,用來填充圖像讓原本大小不一的圖像,重新變?yōu)橐粋€長寬相同的正方形圖像,方便之后處理。
通過 fill_image() 方法,我們就會得到新的一張正方形圖像。隨后我們在利用 cut_image() 方法,把圖像分隔成 9 張,因為微信朋友圈最多發(fā) 9張圖片。
from PIL import Image
import sys
#先將 input image 填充為正方形
def fill_image(image):
width, height = image.size
#選取長和寬中較大值作為新圖片的
new_image_length = width if width > height else height
#生成新圖片[白底]
new_image = Image.new(image.mode, (new_image_length, new_image_length), color='white') #注意這個函數(shù)!
#將之前的圖粘貼在新圖上,居中
if width > height:#原圖寬大于高,則填充圖片的豎直維度 #(x,y)二元組表示粘貼上圖相對下圖的起始位置,是個坐標(biāo)點。
new_image.paste(image, (0, int((new_image_length - height) / 2)))
else:
new_image.paste(image, (int((new_image_length - width) / 2),0))
return new_image
def cut_image(image):
width, height = image.size
item_width = int(width / 3) #因為朋友圈一行放3張圖。
box_list = []
# (left, upper, right, lower)
for i in range(0,3):
for j in range(0,3):
#print((i*item_width,j*item_width,(i+1)*item_width,(j+1)*item_width))
box = (j*item_width,i*item_width,(j+1)*item_width,(i+1)*item_width)
box_list.append(box)
image_list = [image.crop(box) for box in box_list]
return image_list
#保存
def save_images(image_list):
index = 1
for image in image_list:
image.save(str(index) + '.png', 'PNG')
index += 1
if __name__ == '__main__':
file_path = "2.jpg" #圖片保存的地址
image = Image.open(file_path)
#image.show()
image_new = fill_image(image)
image_list = cut_image(image_new)
save_images(image_list)
如果有興趣的話可以看一看Pillow庫的使用
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Django makemigrations migrate執(zhí)行成功但不創(chuàng)建數(shù)據(jù)庫表的解決
這篇文章主要介紹了Django makemigrations migrate執(zhí)行成功但不創(chuàng)建數(shù)據(jù)庫表的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
python pandas實現(xiàn)excel轉(zhuǎn)為html格式的方法
今天小編就為大家分享一篇python pandas實現(xiàn)excel轉(zhuǎn)為html格式的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Pycharm 2020.1 版配置優(yōu)化的詳細(xì)教程
這篇文章主要介紹了更新Pycharm 2020.1 版配置優(yōu)化的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
pyinstaller將python程序打包為可執(zhí)行文件
這篇文章主要介紹了pyinstaller將python程序打包為可執(zhí)行文件,pyinstaller是一個python打包工具,它將python程序及所需依賴都打包成一個可執(zhí)行文件2022-08-08
Python實現(xiàn)數(shù)據(jù)結(jié)構(gòu)線性鏈表(單鏈表)算法示例
這篇文章主要介紹了Python實現(xiàn)數(shù)據(jù)結(jié)構(gòu)線性鏈表(單鏈表)算法,結(jié)合實例形式分析了Python單鏈表的定義、節(jié)點插入、刪除、打印等相關(guān)操作技巧,需要的朋友可以參考下2019-05-05

