活不多说,先上图
img = cv2.imread('OIP-C.jpeg',cv2.IMREAD_COLOR)
imgRGB = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
dst = cv2.resize(imgRGB, (400, 400))
Image.fromarray(dst)
Image.fromarray(rotating_inscribed_circle(dst,np.pi*2/3,120))
方法代码:
import numpy as np
def rotating_inscribed_circle(img,radian,r=None):
#img : (h,w,3)
h,w,_=img.shape
r=min(w,h)/2 if r is None else r
y=np.arange(h).reshape(-1,1)
x=np.arange(w).reshape(1,-1)
cy ,cx= (h-1)/2,(w-1)/2
x_=(y-cy)*np.sin(radian)+(x-cx)*np.cos(radian)+cx
y_=(y-cy)*np.cos(radian)-(x-cx)*np.sin(radian)+cy
i = (y_-cy)**2+(x_-cx)**2 <r**2
y=(y*(1-i)+y_*i).astype(int)
x=(x*(1-i)+x_*i).astype(int)
return img[y,x]