前言
有个需求时写一个函数,传入flag,flag 是up就裁减图片上部分,down就裁下部分,左右同理。。。当然,使用if elif完全没问题,这里仅仅是记录自己的折腾,直接上代码
code
%matplotlib inline
import cv2
import matplotlib.pyplot as plt
def get_template_frames(flag:str,frame:'np.array',roi_rate=0.5) -> 'np.array':
return {'U': lambda frame,roi_rate:frame[:int(roi_rate*frame.shape[0]),:,:],
'D': lambda frame,roi_rate:frame[(frame.shape[0]-int(roi_rate*frame.shape[0])):,:,:],
'L': lambda frame,roi_rate:frame[:,:int(roi_rate*frame.shape[1]),:],
'R': lambda frame,roi_rate:frame[:,frame.shape[1]-int(roi_rate*frame.shape[1]):,:],
}.get(flag,frame)(frame,roi_rate)
frame=cv2.imread('/home/chiebotgpuhq/MyCode/test.jpeg')
plt.imshow(frame)
<matplotlib.image.AxesImage at 0x7f6ddb6ca7d0>
frame=get_template_frames('L',frame)
# plt.imshow(frame)
print(type(frame))
plt.imshow(frame)
<class 'numpy.ndarray'>
<matplotlib.image.AxesImage at 0x7f6ddb6b4190>