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)

以上这篇python 图像平移和旋转的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是 python 图像平移和旋转的实例 的全部内容, 来源链接: utcz.com/z/328704.html

回到顶部