rotate image python
import skimage import skimage.transform rotated_img=skimage.transform.rotate(img,-60, resize=True)
rotate image python
import skimage import skimage.transform rotated_img=skimage.transform.rotate(img,-60, resize=True)
how to rotate image python manually
def rotate_image(img, degrees, output_scale="crop"): assert output_scale in ["crop", "full"], "output_scale should be either 'crop' or 'full'" # convert rotation amount to radian rot_rad = degrees * np.pi / 180.0 rotate_m = np.array([[np.cos(rot_rad), np.sin(rot_rad)], [- np.sin(rot_rad), np.cos(rot_rad)]]) # If output_scale = "full", the image must be inserted into a bigger frame, so the coordinates would be translated # appropriately. gray_scale = False if len(img.shape) < 3: img = img.reshape(*img.shape, 1) gray_scale = True h, w, c = img.shape if output_scale == "full": diagonal = int(np.sqrt(h * h + w * w)) # Pytagoras theorm - the diagonal is the longest line in the rectangle im_padded = np.zeros((diagonal, diagonal, c)) center_h = int((diagonal - h) // 2) center_w = int((diagonal - w) // 2) im_padded[center_h:-center_h, center_w:-center_w, :] = img img = im_padded rotated_image = np.zeros((diagonal, diagonal, c)) h, w, c = img.shape else: rotated_image = np.zeros((h, w, c)) # Rotate and shift the indices, from PICTURE to SOURCE (and NOT the intuitive way) indices_org = np.array(np.meshgrid(np.arange(h), np.arange(w))).reshape(2, -1) indices_new = indices_org.copy() indices_new = np.dot(rotate_m, indices_new).astype(int) # Apply the affineWrap mu1 = np.mean(indices_new, axis=1).astype(int).reshape((-1, 1)) mu2 = np.mean(indices_org, axis=1).astype(int).reshape((-1, 1)) indices_new += (mu2-mu1) # Shift the image back to the center # Remove the pixels in the rotated image, that are now out of the bounds of the result image # (Note that the result image is a rectangle of shape (h,w,c) that the rotated image is inserted into, so in the # case of a "full" output_scale, these are just black pixels from the padded image...). t0, t1 = indices_new t0 = (0 <= t0) & (t0 < h) t1 = (0 <= t1) & (t1 < w) valid = t0 & t1 indices_new = indices_new.T[valid].T indices_org = indices_org.T[valid].T # xind, yind = indices_new xi, yi = indices_org rotated_image[xi, yi, :] = img[xind, yind, :] if gray_scale: rotated_image = rotated_image.reshape((h, w)) return rotated_image.astype(np.uint8) img = cv2.imread(image_path) rotated = rotate_image(img, 45) cv2.imshow("Rotated_Image", rotated) cv2.waitkey(0)
Copyright © 2021 Codeinu
Forgot your account's password or having trouble logging into your Account? Don't worry, we'll help you to get back your account. Enter your email address and we'll send you a recovery link to reset your password. If you are experiencing problems resetting your password contact us