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)


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值