如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
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 )
|
旋转:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
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 )
|
以上这篇python 图像平移和旋转的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/u010096025/article/details/53780602