この記事の例では、参考のためにpythonでPILを使用して写真をカットおよびステッチするための特定のコードを共有しています。具体的な内容は次のとおりです。
仕事の都合でPILパッケージに触れて、他の人のブログがいくつかの穴を踏んでいるのを見ました。いくつかのブログは、各位置パラメータの意味を示していませんでした。今日はそれを記入します。
作物
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、スプライシング
コード:
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