Pythonは写真のステッチを実現します

最近、Convolutional Neural Networksに関する論文を書いていましたが、整理が必要な実験結果がたくさんあります。もともと画像のステッチにMeitu Xiuxiuを使用していましたが、繰り返し操作が多すぎてステッチ効果が良くないことがわかりました。pythonでスクリプトを書くことを考えました。達成するには、簡単な例を見てください。

横縫い

まず、同じ画像の変形を1行につなぎ合わせる必要があります。コードは、次のとおりです。

import os
from PIL import Image

UNIT_SIZE =229 #1枚の画像のサイズは229です*229
TARGET_WIDTH =6* UNIT_SIZE #接合後の水平方向の長さは6です。*229

path ="C:/Users/zm/Desktop/FinalResult/Other-Reconstruction/2"
images =[] #最初にすべての画像の名前を保存します
for root, dirs, files in os.walk(path):for f in files :
 images.append(f)for i inrange(len(images)/6): #グループとして6枚の画像
 imagefile =[]
 j =0for j inrange(6):
 imagefile.append(Image.open(path+'/'+images[i*6+j])) 
 target = Image.new('RGB',(TARGET_WIDTH, UNIT_SIZE)) 
 left =0
 right = UNIT_SIZE
 for image in imagefile:  
 target.paste(image,(left,0, right, UNIT_SIZE))#ターゲットの指定された場所に画像をコピーします
 left += UNIT_SIZE #左は左上隅の横軸で、順番に増加します
 right += UNIT_SIZE #右は右下の横軸で、順番に増加します
 quality_value =100 #生成された画像の品質を指定するための品質。範囲は0〜100です。
 target.save(path+'/result/'+os.path.splitext(images[i*6+j])[0]+'.jpg', quality = quality_value)
 imagefile =[]

縦縫い

それぞれの種類の写真を6枚の列につなぎ合わせた後、これらの写真を縦につなぎ合わせます。合計3種類の画像があるため、3列になります。

import os
from PIL import Image

UNIT_SIZE =229 #画像の高さ
TARGET_WIDTH =6* UNIT_SIZE #連続して6つの画像があるので、6*229とても広い

path ="C:/Users/zm/Desktop/FinalResult/Other-Reconstruction/2/result"
imagefile =[]for root, dirs, files in os.walk(path):for f in files :
 imagefile.append(Image.open(path+'/'+f)) 
target = Image.new('RGB',(TARGET_WIDTH, UNIT_SIZE*3)) #最終的なステッチ画像のサイズは(229*3)*(229*6)
left =0
right = UNIT_SIZE
for image in imagefile:  
 target.paste(image,(0, left, TARGET_WIDTH, right))
 left += UNIT_SIZE #上から下にステッチすると、左上隅の縦方向が増加します
 right += UNIT_SIZE #左下隅の縦も増加します
 quality_value =100
 target.save(path+'/result.jpg', quality = quality_value)

水平方向と垂直方向の同時ステッチ

今日処理する必要のある写真は次のとおりです:左側は写真が配置されているフォルダーであり、各フォルダーの写真は→_→右側として表示され、2 * 5の写真にスプライスする必要があります。

記述されたスクリプトは次のとおりです。

import os
from PIL import Image

UNIT_SIZE =229 # the size of image 
def pinjie(images,num):
 target = Image.new('RGB',(UNIT_SIZE*5, UNIT_SIZE*2)) # result is 2*5
 leftone =0
 lefttwo =0
 rightone = UNIT_SIZE
 righttwo = UNIT_SIZE
 for i inrange(len(images)):if(i%2==0):
 target.paste(images[i],(leftone,0, rightone, UNIT_SIZE))
 leftone += UNIT_SIZE #最初の行の左上隅を右に移動します
 rightone += UNIT_SIZE #右下隅に移動
 else:
 target.paste(images[i],(lefttwo, UNIT_SIZE, righttwo, UNIT_SIZE*2))
 lefttwo += UNIT_SIZE #2行目の左上隅を右に移動します
 righttwo += UNIT_SIZE #右下隅に移動
 quality_value =100
 target.save(path+dirlist[num]+'.jpg', quality = quality_value)

path ="C:/Users/laojbdao/Desktop/FinalResult/result4/different_distribution/"
dirlist =[] # all dir name
for root, dirs, files in os.walk(path):for dir in dirs :
 dirlist.append(dir)

num =0for dir in dirlist:
 images =[] # images in each folder
 for root, dirs, files in os.walk(path+dir): # traverse each folder
 print path+dir+''for file in files:
 images.append(Image.open(path+dir+'/'+file))pinjie(images,num)
 num +=1
 images =[]

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

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

Recommended Posts

Pythonは写真のステッチを実現します
Pythonは写真の水平ステッチを実装しています
Pythonは宇宙船戦争を実現します
Pythonは画像の水平および垂直スプライシングを実現します
Pythonは意味のある画像を生成します
Pythonは画像スティッチングを実装しています
python + OpenCVは画像のスティッチングを実現します
Pythonはオンライン翻訳を実現します
Pythonは戦車戦を実現
Python3は飛行機戦争ゲームを実現します
Pythonはオンライン翻訳機能を実現します
Pythonはリンゴを食べるゲームを実現します
Pythonは推測ゲームを実現します
Pythonは3Dマップの視覚化を実現します
Pythonはフェイスサインインシステムを実現します
Pythonはパノラマ画像スティッチングを実装しています
画像スティッチング用のpythonopencv
Pythonは写真のバッチ命名を実現します
Pythonは画像スティッチング機能を実装しています
Pythonは名刺管理システムを実現
Python3は名刺管理システムを実現
Pythonはエクスプレス価格クエリシステムを実現します
Pythonはオンラインマイクロブログデータの視覚化を実現します
Pythonは画像認識カー機能を実現
Pythonはudp送信画像機能を実現します
Pythonはコンソール出力カラーフォントを実現します
パイソンドライグッズ|リモートセンシング画像ステッチ
パイソンドライグッズ|リモートセンシング画像ステッチ
Pythonはファイル名のバッチ変更を実現します
python3はマスク描画の機能を実現します
Pythonは貪欲なヘビの二重の戦いを実現します
Python-ステーションのすべての写真をクロール