图像旋转的python代码

图像旋转

  • 通过opencv进行旋转
  • 矩阵转置方法旋转图片

通过opencv进行旋转

通过opencv的函数进行旋转

示例图像
图像旋转的python代码_第1张图片
代码

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

# 这个成功的代码只能旋蒸180度,对于90度和270度等的角度会产生大量的黑色
path = './4.52_48.5/'
path_save = './4.52_48.5_rotate/'
photo_name = '125'

print(path+photo_name+'.jpg')
img = cv2.imread(path+photo_name+'.jpg')
rows, cols = img.shape[:2]

# 第一个参数旋转中心,第二个参数旋转角度,第三个参数:缩放比例, 生成一2*3的矩阵

M1 = cv2.getRotationMatrix2D((cols/2,rows/2),180,1)
'''
[[ 6.123234e-17  1.000000e+00  1.500000e+02]
 [-1.000000e+00  6.123234e-17  6.500000e+02]]
'''
# 第三个参数:变换后的图像大小
img_tra1 = cv2.warpAffine(img,M1,(cols,rows))
# # 进行仿射变换,边界填充为255,即白色,默认为黑色
# image_rotation = cv2.warpAffine(src=image, M=M, dsize=(height, width), borderValue=(255, 255, 255))
# img_tra2 = cv2.warpAffine(img,M2,(cols,rows), borderValue=(155, 100, 155))

cv2.imshow('img',img)
cv2.waitKey(0)
cv2.imshow('img_tra',img_tra1)
# print(path_save+photo_name+"rotate_3.jpg")
print(cv2.imwrite(path_save+photo_name+"rotate_180.jpg", img_tra1))
cv2.waitKey(0)

结果图像:
图像旋转的python代码_第2张图片

总结:
这种方法旋转图像只有在旋转180度时的效果比较好,其他的角度时会产生大量的黑色区域(#warpAffine方法效果很差,留下大片黑色区域。)

矩阵转置方法旋转图片

使用flip和transpose可以实现逆时针旋转90度。先flip或先transpose均可。

#coding:utf-8
import os
import cv2


# PyOpenCV图像逆时针旋转90度
# warpAffine方法效果很搓,留下大片黑色区域。
#
# 使用flip和transpose可以实现逆时针旋转90度。先flip或先transpose均可。

path = './4.52_48.5/'
path_save = './4.52_48.5_rotate/'
photo_name = '125'

imput_path = path
save_path = path_save

print(path+photo_name+'.jpg')
img = cv2.imread(path+photo_name+'.jpg')
rows, cols = img.shape[:2]
im = cv2.imread(path + photo_name + '.jpg')
dst_im = cv2.flip(im, 1) #原型:cv2.flip(src, flipCode[, dst]) → dst flipCode表示对称轴 0:x轴 1:y轴. -1:both
dst_im = cv2.transpose(dst_im)
cv2.imwrite(path_save + photo_name + 'rotate.jpg', dst_im) #保存

图像旋转的python代码_第3张图片

结论:
通过这方法对于90度的旋转非常好,示例代码时逆时针旋转90度。

你可能感兴趣的:(python学习和代码,python)