180709 利用Python与OpenCV裁剪图像做数据增强



原始图像
这里写图片描述

裁剪图像
这里写图片描述

# -*- coding: utf-8 -*-
""" Created on Mon Jul 9 11:38:19 2018 @author: guokai_liu """

import numpy as np
import matplotlib.pyplot as plt
import cv2

filename = 'Yuna2.jpg'
def crop_figure(fn,kw=100,kh=100,sx=50,sy=50):
    # assgn saving name
    sn = fn.split('.')[0]
    # read image
    img = cv2.imread(fn)
    # set parameters
    f_h, f_w,f_c = img.shape
    k_w = kw
    k_h = kh
    s_x = sx
    s_y = sy
    # get output numbers of rows and columns
    n_y = (f_h-k_w)//s_y
    n_x = (f_w-k_h)//s_x
    # begin points for rows and columns
    c_x = [i+s_x*i for i in range(n_x)]
    c_y = [i+s_y*i for i in range(n_y)]

    # crop images 
    for idx_y, y in enumerate(c_y):
        for idx_x,x in enumerate(c_x):
            crop_img = img[y:y+k_h,x:x+k_w]
            cv2.imwrite('fig/%s-y=%i-x=%i.jpg'%(sn,idx_y,idx_x),crop_img)

crop_figure(filename)