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 图像扩充之旋转、平移、缩放、裁剪相关推荐

  1. 图像仿射变换matlab,图像的仿射变换原理和实现

    图像的仿射变换原理和实现 发布时间:2018-05-06 01:03, 浏览次数:1148 仿射变换能够保持图像的"平直性",包括旋转,缩放,平移,错切操作.一般而言,仿射变换矩阵 ...

  2. 【计算机图形学】c++ OpenGL 二维变换(包括多边形绘制、平移、旋转及缩放)

    运行结果演示 源代码 // 二维变换.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h" #include<GL/glut.h> #i ...

  3. 二维图形学的变换-平移、旋转、缩放 OpenGL

    这里实现的是多点画多边形,然后把这个多边形进行二维的变换. 首先,多点画多边形,为了方便起见,我直接调用了Opengl的库函数.其次,就是如何进行多边形的二维变换.在这里我有两种方法.第一种是直接根据 ...

  4. android控件旋转、缩放、平移完美版方案(双指操作、单指操作都有)

    前言 项目要求模仿时光手杖APP做一个可平移.旋转.缩放的控件,于是就开始研究了起来,网上找的方案加上自己的思考,得出了以下完美版平移.缩放.旋转控件,双指缩放旋转,单指缩放旋转都支持. 效果图 我们 ...

  5. [Python图像处理] 六.图像缩放、图像旋转、图像翻转与图像平移

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  6. python函数图像平移_旋转、缩放和平移二维坐标?

    下面是一个关于矩阵的解决方案(这对于这种计算是有意义的,最后,二维坐标是一列的矩阵!)我是说 缩放非常简单,只需将矩阵的每个元素乘以缩放因子即可:scaled = copy.deepcopy(orig ...

  7. 使用Python,OpenCV进行图像平移转换

    使用Python,OpenCV进行图像平移转换 1. 效果图 2. 原理 3. 源码 参考 这篇博客将介绍如何使用Python,OpenCV对图像进行平移转换.平移是图像沿x轴和y轴的移动.使用平移, ...

  8. Python:利用python编程实现三维图像绘制展示(六面体旋转、三维球柱状体、下雪场景等)

    Python:利用python编程实现三维图像绘制展示(六面体旋转.三维球柱状体.下雪场景等) 目录 利用python编程实现三维图像绘制展示(六面体旋转.三维球柱状体.下雪场景等) 1.实现六面体旋 ...

  9. python怎么让摄像头图像暂停然后在启动_双目摄像头测量距离

    前言 在计算机视觉中,可以通过双目摄像头实现,常用的有BM 算法和SGBM 算法等,双目测距跟激光不同,双目测距不需要激光光源,是人眼安全的,只需要摄像头,成本非常底,也用于应用到大多数的项目中.本章 ...

  10. 数字图像处理与Python实现笔记之图像特征提取

    数字图像处理与Python实现笔记 摘要 绪论 1 数字图像处理基础知识 2 彩色图像处理初步 3 空间滤波 4 频域滤波 5 图像特征提取 5.1 图像颜色特征提取 5.1.1 颜色直方图 1 一般 ...

最新文章

  1. 图灵“微软四大技术秘籍”近期出版!
  2. 每日一皮:资深老鸟看实习生写代码...
  3. c语言 浮点型数据怎么存放,C语言学习之浮点型数据存储
  4. asp.net mysql 事务_ASP.NET Core 1.0 使用 Dapper 操作 MySql(包含事务)
  5. 卡扇区数据教程_硬盘有坏道了?如何对硬盘进行扇区级复制及数据恢复?
  6. android R编译Super镜像时报错问题分析和定位
  7. c语言自己编译自己,TCC研究(一): Tiny C Compiler最小的C语言编译器,自己编译自己...
  8. 在shop++二次开发中金额数据类型BigDecimal转换,注意细节。
  9. hdu 3905(dp)
  10. 关于Shiro的标签应用
  11. php session 设置无效
  12. BOOT.BIN文件
  13. 【小程序源码】花体字转换器支持多种花样字体不同风格
  14. 下载iPhone APP软件历史版本教程
  15. HDMI-FMC子卡的使用(基于VC707)(中)
  16. gradle启动项目编译报错:Executing task ‘clean‘...Task execution finished
  17. 计算机应用能力考试湖南成绩查询,湖南计算机等级考试成绩查询入口
  18. Win10系统IE浏览器设置代理上网的方法
  19. 【Excel函数】隔行取数并取最大值
  20. 项目管理中什么最重要?

热门文章

  1. 网易严选App感受WEEX 开发
  2. 「捷径」解读:iOS 自动化的 3.0 时代
  3. 裁判文书网爬虫(2019.5.15更新)
  4. 世界豪车 TOP 10
  5. Week 2 Sequence Labelling
  6. 思科arp欺骗攻击,cdp攻击,DHCP攻击实验命令笔记
  7. python百度云链接哔哩哔哩弹幕网_python预课05 爬虫初步学习+jieba分词+词云库+哔哩哔哩弹幕爬取示例(数据分析pandas)...
  8. 新浪微博开放平台开发步骤简介(适合新手看)
  9. Ubuntu16.04解决arpspoof时出现arpspoof: libnet_check_iface() ioctl: No such device问题
  10. Mac 下拷贝文件到移动硬盘