当前位置: 首页 > news >正文

南昌做网站开发的公司哪家好文娱热搜榜

南昌做网站开发的公司哪家好,文娱热搜榜,韩国电视剧,分销小程序源码网在《使用numpy处理图片——基础操作》一文中,我们介绍了如何使用numpy修改图片的透明度。本文我们将介绍镜像翻转和旋转。 镜像翻转 上下翻转 from PIL import Image import numpy as np img Image.open(example.png) data np.array(img)# axis0 is vertical, a…

在《使用numpy处理图片——基础操作》一文中,我们介绍了如何使用numpy修改图片的透明度。本文我们将介绍镜像翻转和旋转。

镜像翻转

上下翻转

在这里插入图片描述

from PIL import Image
import numpy as np
img = Image.open('example.png')
data = np.array(img)# axis=0 is vertical, axis=1 is horizontal
verticalData = np.flip(data, axis=0)
verticalImg = Image.fromarray(verticalData)
verticalImg.save('vertical.png')

请添加图片描述

左右翻转

在这里插入图片描述

from PIL import Image
import numpy as np
img = Image.open('example.png')
data = np.array(img)# axis=0 is vertical, axis=1 is horizontal
horizontalData = np.flip(data, axis=1)
horizontalImg = Image.fromarray(horizontalData)
horizontalImg.save('horizontal.png')

请添加图片描述

旋转

上面的翻转,又可以称之为镜像翻转。因为得到的图片,只有通过镜子去查看,才是正常的字。

在这里插入图片描述
而一般情况下,我们需要的是旋转,即得到的文字还是可以正确识别的。
在这里插入图片描述

向左旋转90度

向左旋转90需要通过两个步骤完成:

  1. 转置
  2. 上下镜像翻转
    在这里插入图片描述
def flip_left_90(arr):return np.flip(arr.transpose((1,0,2)), axis=0)

需要解释下transpose传递元组的意思

If specified, it must be a tuple or list which contains a permutation of [0,1,…,N-1] where N is the number of axes of a. The i’th axis of the returned array will correspond to the axis numbered axes[i] of the input. If not specified, defaults to range(a.ndim)[::-1], which reverses the order of the axes.

这句话的意思是,传递的元组要包含该数组所有的维度的值。转换的方法就是对应项相互转置。比如数组最开始时的维度表示是(0,1,2),如果给transpose传递了(1,0,2)。就意味着0维度和1维度转置,2维度保持不变。这个对我们处理图片特别重要,因为2维度保存的是RGBA信息。这个信息不能转置,否则就会导致颜色错乱。
请添加图片描述

旋转180度

旋转180度有两种方法:

  1. 两次90度左转。
  2. 上下镜像翻转后左右镜像翻转。(顺序无所谓)

在这里插入图片描述

def flip_180_with_flip_left_90(arr):return flip_left_90(flip_left_90(arr))

在这里插入图片描述

def flip_180_with_axis(arr):return np.flip(np.flip(arr, axis=1), axis=0)

请添加图片描述

向右旋转90度

向右旋转90度,也是向左旋转270度。可以拆解为:

  • 3次向左旋转
  • 1次180度旋转外加1次90度向左旋转
  • 1次90度向左旋转外加1次180度旋转
def flip_right_90_with_left_90(arr):return flip_left_90(flip_left_90(flip_left_90(arr)))def flip_right_90_with_axis_left_90(arr):return flip_left_90(flip_180_with_axis(arr))def flip_right_90_with_left_90_axis(arr):return flip_180_with_axis(flip_left_90(arr))

请添加图片描述

代码

from PIL import Image
import numpy as np
img = Image.open('example.png')
data = np.array(img)# axis=0 is vertical, axis=1 is horizontal
verticalData = np.flip(data, axis=0)
verticalImg = Image.fromarray(verticalData)
verticalImg.save('vertical.png')horizontalData = np.flip(data, axis=1)
horizontalImg = Image.fromarray(horizontalData)
horizontalImg.save('horizontal.png')def flip_180_with_flip_left_90(arr):return flip_left_90(flip_left_90(arr))def flip_180_with_axis(arr):return np.flip(np.flip(arr, axis=1), axis=0)def flip_left_90(arr):return np.flip(arr.transpose((1,0,2)), axis=0)def flip_right_90_with_left_90(arr):return flip_left_90(flip_left_90(flip_left_90(arr)))def flip_right_90_with_axis_left_90(arr):return flip_left_90(flip_180_with_axis(arr))def flip_right_90_with_left_90_axis(arr):return flip_180_with_axis(flip_left_90(arr))left90Data = flip_left_90(data)
left90Img = Image.fromarray(left90Data)
left90Img.save('flipleft90.png')right90DataFromLeft90 = flip_right_90_with_left_90(data)
right90ImgFromLeft90 = Image.fromarray(right90DataFromLeft90)
right90ImgFromLeft90.save('flipright90fromleft90.png')right90DataFromAxisLeft90 = flip_right_90_with_axis_left_90(data)
right90ImgFromAxisLeft90 = Image.fromarray(right90DataFromAxisLeft90)
right90ImgFromAxisLeft90.save('flipright90fromamxisleft90.png')right90DataFromLeft90Axis = flip_right_90_with_left_90_axis(data)
right90ImgFromLeft90Axis = Image.fromarray(right90DataFromLeft90Axis)
right90ImgFromLeft90Axis.save('flipright90fromleft90amxis.png')left180DataFromLeft90 = flip_180_with_flip_left_90(data)
left180ImgFromLeft90 = Image.fromarray(left180DataFromLeft90)
left180ImgFromLeft90.save('flip180fromleft90.png')left180DataFromAxis = flip_180_with_axis(data)
left180ImgFromAxis = Image.fromarray(left180DataFromAxis)
left180ImgFromAxis.save('flip180fromaxis.png')

参考资料

  • https://flat2010.github.io/2017/05/31/Numpy%E6%95%B0%E7%BB%84%E8%A7%A3%E6%83%91/
  • https://numpy.org/doc/stable/reference/generated/numpy.transpose.html
http://www.yidumall.com/news/81058.html

相关文章:

  • 什么是网站后台建设网站流量统计分析工具
  • 网站维护的主要内容包括友情链接交易网站源码
  • 搭建网站 开源软件百度推广优化工具
  • 昆山公司网站制作app软件推广平台
  • 网站建设价格明细宁波seo推广定制
  • 山西专业网站建设大全新闻 近期大事件
  • 如何判断网站是不是自适应代运营公司排名
  • 自已创建网站要怎么做营销策略有哪些方面
  • 商标注册网站缴费入口怎样宣传自己的产品
  • 做网站引流到天猫百度一下点击搜索
  • 日本的网站设计公司页面设计
  • 做网站所用的技术深圳网络整合营销公司
  • dedecms 购物网站大白兔网络营销策划书
  • 深圳公司名称核准查询seo网站推广助理
  • 摄影网站的制作时事新闻
  • 昆明建设公司网站促销方法100种
  • 邓州网站建设seo关键词排名优化是什么
  • 阿里云服务器做网站安全吗seo的关键词无需
  • 南宁的公司有哪些杭州优化外包哪里好
  • b2b电子商务网站的类型怎么样做seo
  • 网站建设与开发学习自助发稿
  • 做代码和网站如何去除痘痘有效果
  • 做网站用php还是python搜索优化的培训免费咨询
  • cms建站是什么抖音seo排名系统哪个好用
  • 做短租哪个网站如何让产品吸引顾客
  • 网站建设制作服务网页设计收费标准
  • 网站建设查看框架的源代码十大seo公司
  • 连锁 加盟 网站模板人员优化是什么意思
  • php网站模板怎么安装怎样进行seo推广
  • 二手车网站开发百度sem认证