PythonはPILを使用して写真をカットおよびステッチします

この記事の例では、参考のためにpythonでPILを使用して写真をカットおよびステッチするための特定のコードを共有しています。具体的な内容は次のとおりです。

仕事の都合でPILパッケージに触れて、他の人のブログがいくつかの穴を踏んでいるのを見ました。いくつかのブログは、各位置パラメータの意味を示していませんでした。今日はそれを記入します。

作物

  1. 最初に画像をダウンロードし、1200 * 1200ピクセルの画像を使用して、Gドライブのimgディレクトリに配置します

  1. この写真を四分の一に切り、写真を保存するためにimg1とimg2の2つの新しいファイルを作成しました

  1. コード
from PIL import Image
img = Image.open('G:/img/1.jpg')print('写真のサイズは次のとおりです。{}'.format(img.size))print('写真を4つの等しい部分、600 X600の4つの写真に分割します')
size =600 #画像サイズは600なので、1つの変数のみが設定されます
left =0 #左から画像の幅の積値
shang =0 #上からの画像の幅の積
index =0 #画像名
for i inrange(4):if i ==2:
 # 3番目の値にループするときは、2行目の画像を切り取る必要があります
 shang +=1
 left =0
 a = size * left #左からの写真のサイズ
 b = size * shang #上から見た写真のサイズ
 c = size *(left +1) #左からの写真のサイズ+画像幅
 d = size *(shang +1) #上から見た写真のサイズ+画像の高さ
 print('a= {},b= {},c= {}, d= {}'.format(a,b,c,d))
 croping = img.crop((a,b,c,d))
 croping.save('G:/img/img1/'+str(index)+'.jpg')
 index +=1
 left +=1

実行結果を見てください:

ファイルを見て、セグメンテーション後にこの画像をimg1ディレクトリに保存します

クリックしてカタログを開いて確認してください。これが必要な効果です。

2、スプライシング

  1. 分割された画像に基づいて接合し、画像をimg2フォルダに保存します

コード:

from PIL import Image
 
imgname =0
def pingjie(imgs):print('------------pingjie-------------')
 target = Image.new('RGB',(size *2, size *1)) #ステッチする前に、ステッチ後の画像サイズを1200に書き込む必要があります*600for i inrange(len(imgs)):
 a = size * i  #左からの写真のサイズ
 b =0  #上から見た写真のサイズ
 c = size *(i +1) #左からの写真のサイズ+画像幅
 d = size  #上から見た写真のサイズ+画像の高さ
 target.paste(imgs[i],(a, b, c, d))
 global imgname
 print('写真をステッチするためのパスは次のとおりです。',path1 +str(imgname)+'.jpg')
 target.save(path1 +str(imgname)+'.jpg')
 imgname +=1
 
def pj():print('------------pj-------------')
 # 1を取る,3は、各行がステッチされたときの最後の行であり、最初の行が0、1に名前が付けられ、2番目の行が2であるためです。,3という名前なので、最後の値を取ります
 imglist =[1,3]
 img =[]for i in imglist:print('完全なラインのスプライシングパスは次のとおりです。'+ path1 +str(i)+'.jpg')
 img.append(Image.open(path1 +str(i)+'.jpg'))
 target = Image.new('RGB',(size *2, size *2)) #ステッチする前に、ステッチ後の画像サイズを1200に書き込む必要があります*1200for i inrange(len(img)):
 a =0 #左からの写真のサイズ
 b = size * i #上から見た写真のサイズ
 c = size *2 #左からの写真のサイズ+画像幅
 d = size *(i +1) #上から見た写真のサイズ+画像の高さ
 target.paste(img[i],(a, b, c, d))
 global imgname
 target.save(path1 +'pingjie'+'.jpg')if __name__ =='__main__':
 size =600 #写真の幅と高さはどちらも600ピクセルです
 path ='G:/img/img1/' #ステッチする写真を保存するディレクトリ
 path1 ='G:/img/img2/' #ステッチ後の写真の保存ディレクトリ
 index =0 #画像名
 for i inrange(2): #2つの行があるため、2回ループする必要があります
 images =[] #各スプライシングは1行ずつのみスプライシングでき、最初の行がスプライシングされた後、写真の2番目のラインはスプライシングできません。マトリックスではこの操作は許可されていません
 for j inrange(2): #各行に2つの画像があるため、2回ループする必要があります
 print(path +str(index)+'.jpg')
 images.append(Image.open(path +str(index)+'.jpg'))
 index +=1print('最初{}ラインステッチが完了しました'.format(i))pingjie(images)pj()

印刷結果を見てください:

次のディレクトリを見てください:img2に保存されている写真を参照してください

ディレクトリを入力してください:スプライシングが成功していることがわかります

この記事はトピック「python画像処理操作」に含まれています。クリックして、よりエキサイティングなコンテンツを学ぶことを歓迎します。

以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。

Recommended Posts

PythonはPILを使用して写真をカットおよびステッチします
魔法の方法とPythonの使用
Pythonはpdfkitを使用してpdfを生成します[python]
およびおよびまたはPythonでの使用方法
Pythonを使用して画像をすばやく切り取る
Pythonはパンダを使用してExcelデータを処理します
Pythonは画像の水平および垂直スプライシングを実現します
Pythonはemailモジュールを使用してメールを送信します
pythonでファイルとディレクトリを削除する方法
Pythonでファイルを読み書きする方法
Python and Go
Pythonの紹介
Pythonは結果を読み取り、Excelに書き込みます
pythonで写真を自動的にダウンロードする方法の例
Pythonはreモジュールを使用して危険な文字を検証します