python图像平移,Python 图像扩充之旋转、平移、缩放、裁剪
Python 图像扩充之旋转、平移、缩放、裁剪
Python 图像扩充之旋转、平移、缩放、裁剪
旋转
def rotate_img(img, degrees):
'''
旋转图片
:param img: 原始图片
:param degrees: 旋转角度
:return:
'''
height, width = img.shape[:2]
# 旋转后的尺寸
heightNew = int(width * fabs(sin(radians(degrees))) + height * fabs(cos(radians(degrees))))
widthNew = int(height * fabs(sin(radians(degrees))) + width * fabs(cos(radians(degrees))))
# 这里的第一个参数为旋转中心,第二个为旋转角度,第三个为旋转后的缩放因子
# 可以通过设置旋转中心,缩放因子,以及窗口大小来防止旋转后超出边界的问题
matRotation = cv2.getRotationMatrix2D((width / 2, height / 2), degrees, 1)
matRotation[0, 2] += (widthNew - width) / 2
matRotation[1, 2] += (heightNew - height) / 2
resultImg = cv2.warpAffine(img, matRotation, (widthNew, heightNew), borderValue=(255, 255, 255))
return resultImg
if __name__ == '__main__':
img = cv2.imread('D:/test/rabbit.jpg')
resultImg = rotate_img(img, 45)
cv2.imshow('origin', img)
cv2.imshow('result', resultImg)
cv2.waitKey(0)
cv2.destroyAllWindows()
原图:
旋转后:
平移
def pan_img(img, x, y):
'''
图片平移
:param img: 原始图片
:param x: 横向移动像素值
:param y: 纵向移动像素值
:return:
'''
M = np.float32([[1, 0, x], [0, 1, y]])
resultImg = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))
return resultImg
if __name__ == '__main__':
img = cv2.imread('D:/test/rabbit.jpg')
resultImg = tools.pan_img(img, -50, -50)
cv2.imshow('origin', img)
cv2.imshow('result', resultImg)
cv2.waitKey(0)
cv2.destroyAllWindows()
平移后:
缩放
def resize_proportion(img, h_zoom, w_zoom):
'''
缩放
:param img: 原始图片
:param h_zoom: 纵向比例
:param w_zoom: 横向比例
:return:
'''
height, width = img.shape[:2]
resultImg = cv2.resize(img, (int(width * w_zoom), int(height * h_zoom)))
return resultImg
if __name__ == '__main__':
img = cv2.imread('D:/test/rabbit.jpg')
resultImg = tools.resize_proportion(img, 1, 0.5)
cv2.imshow('origin', img)
cv2.imshow('result', resultImg)
cv2.waitKey(0)
cv2.destroyAllWindows()
缩放后:
裁剪
def cropped_center(img, x1, y1, x2, y2):
'''
裁剪
:param img: 原始图片
:param x1: 左边界
:param y1: 上边界
:param x2: 右边界
:param y2: 下边界
:return:
'''
resultImg = img[y1:y2, x1:x2]
return resultImg
if __name__ == '__main__':
img = cv2.imread('D:/test/rabbit.jpg')
resultImg = tools.cropped_center(img, 20, 20, 400, 400)
cv2.imshow('origin', img)
cv2.imshow('result', resultImg)
cv2.waitKey(0)
cv2.destroyAllWindows()
裁剪后:
Python 图像扩充之旋转、平移、缩放、裁剪相关教程
python图像平移,Python 图像扩充之旋转、平移、缩放、裁剪相关推荐
- 图像仿射变换matlab,图像的仿射变换原理和实现
图像的仿射变换原理和实现 发布时间:2018-05-06 01:03, 浏览次数:1148 仿射变换能够保持图像的"平直性",包括旋转,缩放,平移,错切操作.一般而言,仿射变换矩阵 ...
- 【计算机图形学】c++ OpenGL 二维变换(包括多边形绘制、平移、旋转及缩放)
运行结果演示 源代码 // 二维变换.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h" #include<GL/glut.h> #i ...
- 二维图形学的变换-平移、旋转、缩放 OpenGL
这里实现的是多点画多边形,然后把这个多边形进行二维的变换. 首先,多点画多边形,为了方便起见,我直接调用了Opengl的库函数.其次,就是如何进行多边形的二维变换.在这里我有两种方法.第一种是直接根据 ...
- android控件旋转、缩放、平移完美版方案(双指操作、单指操作都有)
前言 项目要求模仿时光手杖APP做一个可平移.旋转.缩放的控件,于是就开始研究了起来,网上找的方案加上自己的思考,得出了以下完美版平移.缩放.旋转控件,双指缩放旋转,单指缩放旋转都支持. 效果图 我们 ...
- [Python图像处理] 六.图像缩放、图像旋转、图像翻转与图像平移
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- python函数图像平移_旋转、缩放和平移二维坐标?
下面是一个关于矩阵的解决方案(这对于这种计算是有意义的,最后,二维坐标是一列的矩阵!)我是说 缩放非常简单,只需将矩阵的每个元素乘以缩放因子即可:scaled = copy.deepcopy(orig ...
- 使用Python,OpenCV进行图像平移转换
使用Python,OpenCV进行图像平移转换 1. 效果图 2. 原理 3. 源码 参考 这篇博客将介绍如何使用Python,OpenCV对图像进行平移转换.平移是图像沿x轴和y轴的移动.使用平移, ...
- Python:利用python编程实现三维图像绘制展示(六面体旋转、三维球柱状体、下雪场景等)
Python:利用python编程实现三维图像绘制展示(六面体旋转.三维球柱状体.下雪场景等) 目录 利用python编程实现三维图像绘制展示(六面体旋转.三维球柱状体.下雪场景等) 1.实现六面体旋 ...
- python怎么让摄像头图像暂停然后在启动_双目摄像头测量距离
前言 在计算机视觉中,可以通过双目摄像头实现,常用的有BM 算法和SGBM 算法等,双目测距跟激光不同,双目测距不需要激光光源,是人眼安全的,只需要摄像头,成本非常底,也用于应用到大多数的项目中.本章 ...
- 数字图像处理与Python实现笔记之图像特征提取
数字图像处理与Python实现笔记 摘要 绪论 1 数字图像处理基础知识 2 彩色图像处理初步 3 空间滤波 4 频域滤波 5 图像特征提取 5.1 图像颜色特征提取 5.1.1 颜色直方图 1 一般 ...
最新文章
- 图灵“微软四大技术秘籍”近期出版!
- 每日一皮:资深老鸟看实习生写代码...
- c语言 浮点型数据怎么存放,C语言学习之浮点型数据存储
- asp.net mysql 事务_ASP.NET Core 1.0 使用 Dapper 操作 MySql(包含事务)
- 卡扇区数据教程_硬盘有坏道了?如何对硬盘进行扇区级复制及数据恢复?
- android R编译Super镜像时报错问题分析和定位
- c语言自己编译自己,TCC研究(一): Tiny C Compiler最小的C语言编译器,自己编译自己...
- 在shop++二次开发中金额数据类型BigDecimal转换,注意细节。
- hdu 3905(dp)
- 关于Shiro的标签应用
- php session 设置无效
- BOOT.BIN文件
- 【小程序源码】花体字转换器支持多种花样字体不同风格
- 下载iPhone APP软件历史版本教程
- HDMI-FMC子卡的使用(基于VC707)(中)
- gradle启动项目编译报错:Executing task ‘clean‘...Task execution finished
- 计算机应用能力考试湖南成绩查询,湖南计算机等级考试成绩查询入口
- Win10系统IE浏览器设置代理上网的方法
- 【Excel函数】隔行取数并取最大值
- 项目管理中什么最重要?
热门文章
- 网易严选App感受WEEX 开发
- 「捷径」解读:iOS 自动化的 3.0 时代
- 裁判文书网爬虫(2019.5.15更新)
- 世界豪车 TOP 10
- Week 2 Sequence Labelling
- 思科arp欺骗攻击,cdp攻击,DHCP攻击实验命令笔记
- python百度云链接哔哩哔哩弹幕网_python预课05 爬虫初步学习+jieba分词+词云库+哔哩哔哩弹幕爬取示例(数据分析pandas)...
- 新浪微博开放平台开发步骤简介(适合新手看)
- Ubuntu16.04解决arpspoof时出现arpspoof: libnet_check_iface() ioctl: No such device问题
- Mac 下拷贝文件到移动硬盘