Python批量裁剪圖形外圍空白區(qū)域
一、基本描述
批量裁剪掉圖片的背景區(qū)域,一般是白色背景,從而減少背景值的干擾和減少存儲(chǔ)空間。
通過(guò)檢索所有圖片的最小裁剪區(qū)域坐標(biāo)值,然后再對(duì)圖片進(jìn)行裁剪。文中圖都是經(jīng)過(guò)標(biāo)準(zhǔn)化處理的,核心圖片內(nèi)容尺度都一致,所以采用該種辦法,如果有很多不同大小的圖片,即圖片中的內(nèi)容區(qū)域大小形狀不一樣,則一張一張的檢索該圖的背景區(qū)域,然后進(jìn)行裁剪。即一張一張的檢索裁剪區(qū)域并進(jìn)行裁剪。
二、實(shí)現(xiàn)代碼
對(duì)原文中的代碼進(jìn)行修改,一張一張的檢索每張圖的裁剪區(qū)域坐標(biāo),然后裁剪。
代碼如下:
from PIL import Image import numpy as np import os ? imagesDirectory = r"C:\Users\Administrator\Desktop\out" ?# tiff圖片所在文件夾路徑 ? i = 0 for imageName in os.listdir(imagesDirectory): ? ? imagePath = os.path.join(imagesDirectory, imageName) ? ? image = Image.open(imagePath) ?# 打開(kāi)tiff圖像 ? ? ImageArray = np.array(image) ? ? row = ImageArray.shape[0] ? ? col = ImageArray.shape[1] ? ? print(row,col) ? ? # 先計(jì)算所有圖片的裁剪范圍,然后再統(tǒng)一裁剪并輸出圖片 ? ? x_left = row ? ? x_top = col ? ? x_right = 0 ? ? x_bottom = 0 ? ? # 上下左右范圍 ? ? """ ? ? Image.crop(left, up, right, below) ? ? left:與左邊界的距離 ? ? up:與上邊界的距離 ? ? right:還是與左邊界的距離 ? ? below:還是與上邊界的距離 ? ? 簡(jiǎn)而言之就是,左上右下。 ? ? """ ? ? i += 1 ? ? for r in range(row): ? ? ? ? for c in range(col): ? ? ? ? ? ? #if ImageArray[row][col][0] < 255 or ImageArray[row][col][0] ==0: ? ? ? ? ? ? if ImageArray[r][c][0] < 255 and ImageArray[r][c][0] !=0: #外框有個(gè)黑色邊框,增加條件判斷 ? ? ? ? ? ? ? ? if x_top > r: ? ? ? ? ? ? ? ? ? ? x_top = r ?# 獲取最小x_top ? ? ? ? ? ? ? ? if x_bottom < r: ? ? ? ? ? ? ? ? ? ? x_bottom = r ?# 獲取最大x_bottom ? ? ? ? ? ? ? ? if x_left > c: ? ? ? ? ? ? ? ? ? ? x_left = c ?# 獲取最小x_left ? ? ? ? ? ? ? ? if x_right < c: ? ? ? ? ? ? ? ? ? ? x_right = c ?# 獲取最大x_right ? ? print(x_left, x_top, x_right, x_bottom) ? ? ?# image = Image.open(imagePath) ?# 打開(kāi)tiff圖像 ? ? cropped = image.crop((x_left-5, x_top-5, x_right+5, x_bottom+5)) ?# (left, upper, right, lower) ? ? cropped.save(r"C:\Users\Administrator\Desktop\out_cut_bg\{}.png".format(imageName[:-4], i)) ? ? print("imageName completed!")
三、效果
原圖顯示:
裁剪結(jié)果顯示:
原文效果:
到此這篇關(guān)于Python批量裁剪圖形外圍空白區(qū)域的文章就介紹到這了,更多相關(guān)Python批量裁剪圖形內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 使用MyQR和qrcode來(lái)制作二維碼
這篇文章主要介紹了python 如何使用MyQR和qrcode來(lái)制作二維碼,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-05-05使用python讀寫txt和json(jsonl)大文件的方法步驟
在Python中讀取txt和json(jsonl)大文件并保存到字典是一項(xiàng)非常常見(jiàn)的操作,這篇文章主要給大家介紹了關(guān)于使用python讀寫txt和json(jsonl)大文件的方法步驟,需要的朋友可以參考下2023-12-12python使用clear方法清除字典內(nèi)全部數(shù)據(jù)實(shí)例
這篇文章主要介紹了python使用clear方法清除字典內(nèi)全部數(shù)據(jù),實(shí)例分析了Python中clear方法清空字典內(nèi)數(shù)據(jù)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07python導(dǎo)入同級(jí)模塊的實(shí)現(xiàn)
這篇文章主要介紹了python導(dǎo)入同級(jí)模塊的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02