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)