网络编程
位置:首页>> 网络编程>> Python编程>> python 图像平移和旋转的实例

python 图像平移和旋转的实例

作者:cc0587  发布时间:2021-03-06 23:59:49 

标签:python,图像,平移,旋转

如下所示:


import cv2
import math
import numpy as np
def move(img):
height, width, channels = img.shape
emptyImage2 = img.copy()
x=20
y=20
for i in range(height):
for j in range(width):
if i>=x and j>=y:
 emptyImage2[i,j]=img[i-x][j-y]
else:
 emptyImage2[i,j]=(0,0,0)

return emptyImage2

img = cv2.imread("e:\\lena.bmp")

cv2.namedWindow("Image")
SaltImage=move(img)
cv2.imshow("Image",img)
cv2.imshow("ss",SaltImage)
cv2.waitKey(0)

旋转:


import cv2
import math
import numpy as np
def XRotate(image, angle):
h, w, channels = image.shape
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))
hh = int(2 * max(Y1, Y2))
ww = int(2 * max(X1, X2))
emptyImage2 = np.zeros((hh, ww, channels), np.uint8)
for i in range(hh):
for j in range(ww):
 x = cosA * i + sinA * j - 0.5 * ww * cosA - 0.5 * hh * sinA + 0.5 * w
 y = cosA * j- sinA * i+ 0.5 * ww * sinA - 0.5 * hh * cosA + 0.5 * h
 x = int(x)
 y = int(y)
 if x > -1 and x < h and y > -1 and y < w :

emptyImage2[i, j] = image[x, y]

return emptyImage2

image = cv2.imread("e:\\lena.bmp")
iXRotate12 = XRotate(image, 30)
cv2.imshow('image', image)
cv2.imshow('iXRotate12', iXRotate12)
cv2.waitKey(0)

来源:https://blog.csdn.net/u010096025/article/details/53780602

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com