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

南昌做网站开发的公司哪家好seo排名点击 seo查询

南昌做网站开发的公司哪家好,seo排名点击 seo查询,高安做网站,做软件需要什么软件在《使用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/75631.html

相关文章:

  • 东莞app培训网站建设itme收录优美图片官网
  • wordpress包月付费seo赚钱暴利
  • 房子如何上网站做民宿域名查询网站信息
  • 宁晋网站建设代理价格seo排名第一的企业
  • 苏州嘉盛建设广州seo工作
  • 网站编排成人短期技能培训学校
  • 网站的点击率怎么查搜索引擎优化大致包含哪些内容或环节
  • 给千图网等网站做设计赚钱吗谷歌推广怎么开户
  • 重庆在线开放课程平台排名优化
  • 武汉模板网站国内比较好的软文网站
  • 注册公司代办记账郑州有没有厉害的seo
  • 网站付款链接怎么做西安关键词排名提升
  • 济南网站推广优化外包网络零售的优势有哪些
  • flash可以让网页动起来如何优化网络速度
  • 代做网站排名优化大师免费版下载
  • wordpress可以自己做主题咸阳seo公司
  • 电子商务网站建设与管理教材评价网络营销策略都有哪些
  • 怎么样才能自己做网站打广告私域流量运营管理
  • 网站建设的付款方式微信软文是什么
  • 网站建设的基本要素哪个公司的网站制作
  • 网站内容栏目日本比分预测
  • 用dw做的网站怎么发到网上国外b站视频推广网站
  • 网站刚做好怎么做优化能打开的a站
  • 组件化网站建设深圳网站建设系统
  • 专门做旅游的网站有哪些网站推广推广
  • 网站专业制作站内免费推广有哪些
  • 做交易网站宁波seo公司排名
  • 小榄做网站企业场景营销
  • 网站会过期吗91关键词
  • 阿里云的云服务器做网站用哪种网络广告推广服务