通過PYTHON來實現(xiàn)圖像分割詳解
程序思路:
此次程序主要是利用PIL(Python Image Libraty)這庫,來進行圖片的處理。
PIL是一個功能非常強大的python圖像處理標準庫,但由于PIL只支持python2.7。如今很多python程序員都使用python3.x,所以PIL在之前的基礎上分離出來一個分支,另外創(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)二元組表示粘貼上圖相對下圖的起始位置,是個坐標點。 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庫的使用
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Django makemigrations migrate執(zhí)行成功但不創(chuàng)建數(shù)據(jù)庫表的解決
這篇文章主要介紹了Django makemigrations migrate執(zhí)行成功但不創(chuàng)建數(shù)據(jù)庫表的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09python pandas實現(xiàn)excel轉為html格式的方法
今天小編就為大家分享一篇python pandas實現(xiàn)excel轉為html格式的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10Pycharm 2020.1 版配置優(yōu)化的詳細教程
這篇文章主要介紹了更新Pycharm 2020.1 版配置優(yōu)化的詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08pyinstaller將python程序打包為可執(zhí)行文件
這篇文章主要介紹了pyinstaller將python程序打包為可執(zhí)行文件,pyinstaller是一個python打包工具,它將python程序及所需依賴都打包成一個可執(zhí)行文件2022-08-08Python實現(xiàn)數(shù)據(jù)結構線性鏈表(單鏈表)算法示例
這篇文章主要介紹了Python實現(xiàn)數(shù)據(jù)結構線性鏈表(單鏈表)算法,結合實例形式分析了Python單鏈表的定義、節(jié)點插入、刪除、打印等相關操作技巧,需要的朋友可以參考下2019-05-05