图像旋转 python实现(针对mxn长方形尺寸图像)
来源:互联网 发布:chart.js柱状图的宽度 编辑:程序博客网 时间:2024/06/08 10:19
实现对图像(mxn m n 不等)进行90 180 270 三个角度的旋转(不引进黑色无像素区域并且保持图像尺寸不变。)
原图:
对正方行尺寸的图像进行90 180 270 角度的旋转完全不出现问题(不出现黑色无像素区域),但是长方形尺寸图像就会出现黑块。如:
先利用 img.transpose(1, 0)
transpose()函数把图像的0 1 维转置,图像的尺寸就从mxn变成了nxm,这就避免了出现黑色无像素区域的问题。
然后观察结果发现,图像不仅旋转了并且左右也对称镜像了,
所以还需要一步操作:
img1.transpose(Image.FLIP_LEFT_RIGHT) #再进行一次左右镜像,把左右对调回来,就得到旋转90°后的图像.csdn上一篇比较好的博客用了自己转换坐标来实现图像旋转,逻辑感觉通篇是对的,但是旋转会出错,代码见下,有时间再更正好。
链接: http://www.cnblogs.com/xianglan/archive/2010/12/26/1917247.html
对方的代码:
#coding=utf-8import cv2import mathimport numpy as npdef LRotate(image, angle): size = image.shape h = size[0] w = size[1] print (size) anglePi = angle * math.pi / 180.0 cosA = math.cos(anglePi) sinA = math.sin(anglePi) X1 = math.ceil(abs(0.5 * h * cosA + 0.5 * w * sinA)) X2 = math.ceil(abs(0.5 * h * cosA - 0.5 * w * sinA)) Y1 = math.ceil(abs(-0.5 * h * sinA + 0.5 * w * cosA)) Y2 = math.ceil(abs(-0.5 * h * sinA - 0.5 * w * cosA)) #H = int(2 * max(Y1, Y2)) #W = int(2 * max(X1, X2)) #size = (W + 1, H + 1) if angle == 90: iLRotate = np.zeros([w, h], np.uint8) for i in range(h): for j in range(w): #x = int(cosA * i - sinA * j - 0.5 * w * cosA + 0.5 * h * sinA + 0.5 * W) #y = int(sinA * i + cosA * j - 0.5 * w * sinA - 0.5 * h * cosA + 0.5 * H) x = int(cosA * i - sinA * j - 0.5 * w * cosA + 0.5 * h * sinA + 0.5 * w) y = int(sinA * i + cosA * j - 0.5 * w * sinA - 0.5 * h * cosA + 0.5 * h) print (x, y) #if x>-1 and x<h and y>-1 and y<w: iLRotate[x, y] = image[i, j] return iLRotateimage = cv2.imread('/...../1/x_0.png', -1)iLRotate90 = LRotate(image, 90)cv2.imwrite('....../x_90.png', iLRotate90)
阅读全文
1 0
- 图像旋转 python实现(针对mxn长方形尺寸图像)
- python oj 图像旋转
- python图像旋转代码
- python opencv 图像尺寸变换
- python opencv 图像尺寸变换
- python opencv 图像尺寸变换
- j2me实现图像旋转
- opencv实现图像旋转
- opencv实现图像旋转
- Opencv实现图像旋转
- OpenCV实现图像旋转
- opencv实现图像旋转
- opencv实现图像旋转
- 图像旋转的实现
- opencv实现图像旋转
- matlab实现图像旋转
- Qt实现图像旋转
- Java实现-旋转图像
- 《燃烧吧少年》小鲜肉最佳观影技能:vivo X6&X6Plus分屏多任务
- “大朋看看”淘宝众筹疑向魔镜宣战!
- 手机管家加码WiFi 重塑公共WiFi连接体验
- R
- BP神经网络的缺点
- 图像旋转 python实现(针对mxn长方形尺寸图像)
- Leetcode:5. Longest Palindromic Substring
- 学习GBDT+LR
- LNMP环境搭建
- opencv 2.4.13 videoCapture无法读取视频
- 林轩田-机器学习基石-作业4-python源码
- 2、在pycharm下搭建测试环境
- Java Graphics2D绘图
- GDB调试常用命令