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


猜你喜欢
- 分享一个以前写的小游戏,纯js游戏,代码很简单。欢迎大家来喷呦!效果图: 代码展示://直接复制到html文件即可 支持IE9+版
- 1. 搭建项目配置环境和创建表创建一个ttsx的项目django-admin startproject ttsx在ttsx下的__init_
- PyTorch基础入门三:PyTorch搭建多项式回归模型 1)理论简介对于一般的线性回归模型,由于该函数拟合出来的是一条直线,所
- 密码学俱乐部的第一条规则是:永远不要自己发明密码系统。密码学俱乐部的第二条规则是:永远不要自己实现密码系统:在现实世界中,在实现以及设计密码
- 前言本文将深入研究 preg_replace /e 模式下的代码执行问题,其中包括 preg_replace 函数的执行过程分析、正则表达式
- 平时自己写了很多代码,但从没好好计算总共写了多少行,面试时被问起来,就傻了。。。闲来无事,写个python程序来统计下import os##
- 1、安装virtulenv、virtulenvwrapper包pip install virtualenv virtualenvwrappe
- [Hack] 意为”劈”、”砍”。 [Hacker] 意为”黑客”CSS Hack 是指针对不同的浏览器写不同的CSS code的过程,简单
- 1. 图片验证码1.1 工具类-utility.py将所有和图片验证码有关的方法放在类 ImageCodeimport randomimpo
- 一个完整的程序离不开日志,无论是开发阶段,还是测试阶段,亦或程序运行阶段,都可以通过日志查看程序的运行情况,或是定位问题。下面是对 pyth
- 一、回顾一下CONVERT()的语法格式:CONVERT (<data_ type>[ length ], <expres
- 代码如下:Class Vector Private vector_datas() Private&n
- 概述可以获取的数据包括:video-视频模块user-用户模块dynamic-动态模块这次用“Running Man”十周年特辑的视频,来做
- 本文实例讲述了python多线程高级锁condition简单用法。分享给大家供大家参考,具体如下:多线程编程中如果使用Condition对象
- 故障描述percona5.6,mysqldump全备份,导入备份数据时报错Duplicate entry 'hoc_log99-it
- 每次卷积神经网络训练的结果都只保存了最后一部分,查阅了一下相关资料,发现是定义saver时采用的默认值,这里进行如下设置: saver =
- MySQL日志文件相信大家都有很多的了解,MySQL日志文件一般在:/var/log/mysqld.log,下面就教您修改MySQL日志文件
- MySQL使用环境变量TMPDIR的值作为保存临时文件的目录的路径名。如果未设置TMPDIR,MySQL将使用系统的默认值,通常为/tmp、
- 下面的代码中python2与python3的print使用区别,大家注意一下。python3需要加()才行。语法:for循环的语法格式如下:
- 在将string类型的数据类型转换为spark rdd时,一直报这个错,StructType can not accept object %