1. 程式人生 > >深度學習圖片過大--------------實現將一張圖片裁剪成二圖片併合並

深度學習圖片過大--------------實現將一張圖片裁剪成二圖片併合並

import os
import cv2
import numpy as np
import tqdm
#cv2讀取一律寫成預設模式
#path = 'D:\\program\\fast-neural-style-tensorflow-master\\C\\pic\\'
path = 'D:\\program\\fast-neural-style-tensorflow-master\\C\\style\\'
def different(path):#識別後的圖片路徑,函式主要的功能是去掉後面的_1,_2分類,然後,讓後去除相同名稱的,只留下檔名
    all_pic = os.listdir(path)
    same = []
    for i in all_pic:
        one = i.split('_')[0]
        same.append(one)
    same = list(set(same))
    return same
def pic_to_tow(picpath):#原始需要分割影象檔案
    all_pic = os.listdir(picpath)
    for i in tqdm.tqdm(all_pic):
        img = cv2.imread(picpath+i)
        h = int(img.shape[0]/2)
        w = int(img.shape[1]/2)
        save_path = path+'jieguo\\'
        if not os.path.exists(save_path):
            os.mkdir(save_path)
        for k in range(1,3,1):
            if k == 1:
                cv2.imwrite(save_path+'{0}_{1}.jpg'.format(i,k),img[:,:w+20,:])#照片裁剪高和寬度
            if k ==2:
                cv2.imwrite(save_path + '{0}_{1}.jpg'.format(i,k),img[:, w-20:, :])  # 照片裁剪高和寬度和通道數
def hebing_pic(path):#第一個引數合併識別後的圖片路徑,函式功能每次提取兩張,合併儲存
    diff_file = different(path)
    print('合併圖片')
    for file in tqdm.tqdm(diff_file):
        z = cv2.imread(path+file+'_1.jpg')#這個地方寫成固定格式,可能需要修改
        half_h = z.shape[0]
        half_w = z.shape[1]
        channels = z.shape[2]
        dst = np.zeros((half_h, half_w * 2-40,channels), np.uint8)
        save_path = path+'hebing\\'
        if not os.path.exists(save_path):
            os.mkdir(save_path)
        for ii in range(1,3,1):
            if ii ==1:
                z = cv2.imread(path+file+'_'+str(ii)+'.jpg')#合併圖片1
                dst[:,:half_w-20,:] = z[:,:half_w-20,:]
            if ii ==2:
                z = cv2.imread(path + file + '_' + str(ii) + '.jpg')
                dst[:,half_w-20:,:] = z[:, 20:, :]
        cv2.imwrite(save_path+file,dst)
    #cv2.waitKey()
    cv2.destroyAllWindows()