OpenCVの画像のトリミング及びステッチ

廃棄画像の割り切れない部分は、画像名にm行n列、図比較的大きな記憶パネルの行と列の大型パネルに切断されます

パネルのターゲット検出対象の位置をマークした後、

その後、モザイクパネルを回し、舗装拡大

1  コーディング= UTF-8。
2  から PIL インポート画像
 3。  PILは缶画像ステッチを貼り付け
4。 インポートCV2を
 5。 インポートnumpyのAS NP
 6。 インポートグロブASグロブ
 7。 インポートOS
 8。 "" " 
9。 入力:画像パス(パス+ファイル名) 、小さな画像の列の数を切断することによって得られ、行(すなわち、幅、高さ)の数
 10  出力:なし
 。11  "" " 
12は、 DEFのcrop_one_picture(パス、ファイル名、COLS、行):
 13である      IMG cv2.imread =(ファイル名,. 1)   #カラー画像を読み取り、画像の透明度(アルファチャンネル)は、デフォルトのパラメータを無視し、グレースケール画像、アルファチャンネルを含む原稿画像を読み取る; 0であることができる、-1、表記
14     = img.shape sum_rows [0]  高さ
15      sum_cols img.shape = [1]  
16      save_path + =パス" \\作物あなたができます。1 {0}} _ {\\ " .format(COLS、行)   保存パス
17。     IF  否定os.path.exists(save_path):
 18である         os.makdirs(save_path)
 。19      プリント" クロップ画像結果の列{0}、{1}、画像ライン。" .format(INT(sum_cols / COLS)、INT (sum_rows / 行)))
 20が 
21である     ため、I レンジ(INT(sum_cols / COLS)):
 22である         ため、J範囲(INT(sum_rows / 行)):
 23              プリント(save_path + STR(os.path.splitext(ファイル名)[0] .split(" \\ ")[ - 1])+ ' _ ' + STR(J )+ ' _ ' + STR(I)+ ' .JPG ' 24              cv2.imwrite(
 25                  save_path + STR(os.path.splitext(ファイル名)[0] .split(" \\ ")[ - 1]) + ' _ ' + STR(J)+ ' _ ' + STR(I)+ ' .JPG '、IMG [* J行:(J + 1)行*、I * COLS:(I + 1)* colsの,:])
 26である             。#cv2.imwrite(」.// //原点IMG _ {{0} } .jpg'.format 1(I、J)、IMG。[* J行:(J + 1)行*、I * COLS:(I + 1)COLS *])
27      プリントカットが完了し、{0を与えます}イメージ。" .format(INT(sum_cols / COLS)* INT(sum_rows / 行)))
 28      プリント" 0でファイル} { " .format(save_path))
 29  
30  
31である """ トラバーサルファイルフォルダ画像フォーマット"" " 
32  DEFのFILE_NAME(のroot_path、PictureType):
 33は、      ファイル名= []
 34である     ため、ファイルのルート、DIRSos.walk(のroot_path):
 35          用のファイルのファイル:
 36              であれば os.path.splitext(ファイル)[1] == picturetype:
 37                  filename.append(os.path.join(ルートファイル))
 38      戻りファイル名
 39  
40のroot_path = ' \\起源-IMG \\。' 
41 filenamelist = FILE_NAME(のroot_path、' .JPG ' 42  
43  プリント(filenamelist)
 44 each_name_list = []
 45   each_name filenamelist:
 46     each_name_list.append(each_name.split(" \\ ")[ - 1 ])
 47  プリント(each_name_list)  最終名
48 = 500 W
 49 H = 500
 50   each_img each_name_list:
 51      crop_one_picture(のroot_path、each_name、W、H )

 

マージ画像:

1  コーディング= UTF-8。
2  から PIL インポート画像
 3。  PIL缶画像ステッチを貼り付け
4。 インポートCV2
 5。 インポートnumpyのAS NP
 6。 インポートグロブASグロブ
 7。 インポートOS
 8。 
9。 "" " 
10  
11。 入力:画像パス(パス+ファイル名)、画像の列の数がトリミングされ、行の数
 12  出力:なし
 13はしない " "" 
14  DEFの:merge_picture(merge_path)
 15      名= FILE_NAME(merge_path、" .JPG 16     形状= cv2.imread(ファイル名[0]、1).shape     三通道的影像需把-1改成1つの
17      COLS =形状[1 ]
 18      行= 形状[0]
 19      チャネル=形状[2 ]
 20  
21  
22      max_cols_th = 0
 23      max_rows_th = 0
 24      のための I における範囲(LEN(ファイル名)):
 25          IMG = cv2.imread(ファイル名[i]は、1 26          cols_th = INT(ファイル名[I] .split(" _ ") [-1] .split(' ' )[0])
 27 もし         cols_th> max_cols_th:
 28              max_cols_th = cols_th
 29          rows_th = INT(ファイル名[I] .split(" _ ")[ - 2 ])
 30          なら rows_th> max_rows_th:
 31              max_rows_th = rows_th
 32      プリント(max_rows_th、max_cols_th)
 33      num_of_cols = max_cols_th +1
 34      num_of_rows = max_rows_th + 1
 35  
36  
37      DST = np.zeros((行×num_of_rows、COLS * num_of_cols、チャネル)、np.uint8)
 38      のための I における範囲(LEN(ファイル名))。
39          IMG = cv2.imread(ファイル名[i]は、1 40          cols_th = INT(ファイル名[I] .split(" _ ") - [1] .split(' ' )[0])
 41          rows_th = INT(ファイル名[I] .split(" _ ")[ - 2 ])
 42 プリント(rows_th、cols_th)
 43          、ROI = IMG [0:行、0:COLS ,:]
 44 45          DST [rows_th *行:(rows_th + 1 )*行cols_th * COLS:(cols_th + 1)* COLS、:] = ROI
 46      cv2.imwrite(merge_path + " merge.jpg " 、DST)
 47 48          
 
 "" " トラバース形式の画像ファイルフォルダ" "" 
49  DEFのFILE_NAME(のroot_path、PictureType):
 50      名= []
 51である     ため、ルートDIRS、ファイルos.walk(のroot_path):
 52である         ため、ファイル内のファイル:
 53である             IF os.path.splitext(ファイル)[1] == PictureType:
 54れる                 filename.append(os.path.join(ルートファイル))
 55      戻りファイル名
 56が 
57である 
58  
59 merge_path = " \\ crop500_500起源-IMG \\。 \\ "    #の小さな画像フォルダマージするファイル
60  
61 merge_picture(merge_path)

おすすめ

転載: www.cnblogs.com/wind-chaser/p/12093767.html