07_Numpy渐变图片的生成

如果图片以ndarray格式处理的话,Numpy有丰富的功能可以对已有图片进行处理,从而得到一张新的图片。
例如:之前介绍过的保存,读取等功能。

01_Numpy的图片处理(读取,变换,保存)

在此,对渐变图片的生死进行介绍:

  • np.tile()和np.linspace()
  • 渐变图片生成(代码)

np.tile()和np.linspace()

虽然生成方法有很多中,这里使用以下的方法来生成渐变图像。

  • np.linspace()等间距数组的增加或减少
  • np.tile()二维数组的排列

渐变的方向只有横,竖。斜面或放射状的渐变不可。

np.linspace()


np.linspace()有开始值(start),结束值(stop),生成个数(num)3个参数,返回的是一个一维数组(等差数列)。
和range(),np.arange()不同的是,隔间数将会自动生成。

import numpy as npprint(np.linspace(0, 10, 3))
# [ 0.  5. 10.]print(np.linspace(0, 10, 4))
# [ 0.          3.33333333  6.66666667 10.        ]print(np.linspace(0, 10, 5))
# [ 0.   2.5  5.   7.5 10. ]

start值>stop值也能处理。

print(np.linspace(10, 0, 5))
# [10.   7.5  5.   2.5  0. ]

np.tile()


np.tile()是一个可以横,竖排列的函数。对于创建重复图案的阵列很有帮助。
在参数中指定原始数组和重复次数。在二维排列的情况下,重复数为(行的重复数(垂直),列的重复数(水平))。

import numpy as npa = np.array([0, 1, 2, 3])print(np.tile(a, 2))
# [0 1 2 3 0 1 2 3]print(np.tile(a, (3, 2)))
# [[0 1 2 3 0 1 2 3]
#  [0 1 2 3 0 1 2 3]
#  [0 1 2 3 0 1 2 3]]print(np.tile(a, (2, 1)))
# [[0 1 2 3]
#  [0 1 2 3]]

如果原始数组是二维数组,也可同样适用。

a = np.array([[11, 12], [21, 22]])print(np.tile(a, 2))
# [[11 12 11 12]
#  [21 22 21 22]]print(np.tile(a, (3, 2)))
# [[11 12 11 12]
#  [21 22 21 22]
#  [11 12 11 12]
#  [21 22 21 22]
#  [11 12 11 12]
#  [21 22 21 22]]print(np.tile(a, (2, 1)))
# [[11 12]
#  [21 22]
#  [11 12]
#  [21 22]]

渐变图片生成(代码)


准备一个函数以生成二维的ndarray数组,该数组可以在垂直或水平方向上以相等的间隔增大或减少。该ndarray对应单色灰度图像。当is_horizontal为True时,灰度为水平变化。当is_horizontal为False时,灰度为垂直变化。

def get_gradation_2d(start, stop, width, height, is_horizontal):if is_horizontal:return np.tile(np.linspace(start, stop, width), (height, 1))else:return np.tile(np.linspace(start, stop, height), (width, 1)).T

这个函数扩展到三个维度。为列表中的每种颜色的值(开始,结束,is_horizonta)3个值,然后调用上述二维版本为每个通道生成渐变图片。

def get_gradation_3d(width, height, start_list, stop_list, is_horizontal_list):result = np.zeros((height, width, len(start_list)), dtype=np.float)for i, (start, stop, is_horizontal) in enumerate(zip(start_list, stop_list, is_horizontal_list)):result[:, :, i] = get_gradation_2d(start, stop, width, height, is_horizontal)return result

接下来生成实际的渐变图片

array = get_gradation_3d(512, 256, (0, 0, 0), (255, 255, 255), (True, True, True))
Image.fromarray(np.uint8(array)).save('./data/07/gradation_h.jpg', quality=95)

array = get_gradation_3d(512, 256, (0, 0, 0), (255, 255, 255), (False, False, False))
Image.fromarray(np.uint8(array)).save('./data/07/gradation_v.jpg', quality=95)

也可以更改RGB值来调整渐变的方向。

array = get_gradation_3d(512, 256, (0, 0, 192), (255, 255, 64), (True, False, False))
Image.fromarray(np.uint8(array)).save('./data/07/gradation_color.jpg', quality=95)

07_Numpy渐变图片的生成相关推荐

  1. Adobe Illustrator(ai)导出emf/wmf渐变图片失真色块

    参考文献:https://jingyan.baidu.com/album/b87fe19e935c9052183568fc.html?picindex=1 软件环境:Adobe Illustrator ...

  2. android生成大分辨率图片,自动生成Android不同分辨率下的图片

    转自: http://blog..net/offbye/article/details/50012605 Android屏幕分辨率适配的图标处理比较麻烦,让UI做不同尺寸的图片也挺浪费时间的,并且容易 ...

  3. 基于对偶学习的跨领域图片描述生成

    作者丨杨敏 学校丨中科院深圳先进技术研究院助理研究员 研究方向丨NLP,数据挖掘,推荐系统 本文经授权转载自公众号「AI论道」. 恰逢 CIKM 2017召开(2017 年 11 月 6 日,新加坡) ...

  4. java生成小图片_JAVA生成缩略小图片类

    JAVA生成缩略小图片类 java.awt.image.BufferedImage是缓冲图片类主要将生成的图片对象缓冲起来:javax.imageio.ImageIO是图片IO控制类,可以将缓冲图片对 ...

  5. eoLinker-API_Shop_验证码识别与生成类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等...

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数 ...

  6. 3d 自动生成物体_根据 2D 图片自动生成 3D 图书封面的牛逼工具

    小金子 读完需要 2分钟 速读仅需 1 分钟 大家好,我是你们的小金子. 今天要给推荐一个小众但很实用的工具,毕竟要用这个工具,你要么是图书工作者,要么就得自己写过书. 它就是一款能够根据 2D 图片 ...

  7. 最近在修改statusBar,添加几张图片.编译源码包时,一直提示无法找到R.drawable.xxxx必须手动编译下指定的图片文件生成R.

    最近在修改statusBar,添加几张图片.编译源码包时,一直提示无法找到R.drawable.xxxx  必须手动编译下指定的图片文件生成R.  $touch frameworks/base/pac ...

  8. 使用C#从图片文件生成图标ICON文件(附源文件)

    使用C#从图片文件生成图标ICON文件(附源文件) 看到网上有一些网站做图标转换工具,挺好的,所以研究了一下在C#中是如何实现的.其实很简单几行代码就可以搞定. 主要是使用System.Drawing ...

  9. 将图片快速生成其轮廓图

    本文适用于将二值图片快速生成其轮廓图并导出 工具为图片编辑软件AI 1.首先选择文件打开图片 2.依次点击嵌入.图片描摹 3.然后点击扩展 4.点击窗口.路径生成器.轮廓 5.点击对象.复合路径 6. ...

最新文章

  1. 用计算机进行图片处理教学设计,三年级信息技术上教学设计
  2. C++ new和delete操作符
  3. ZieglerNicholas PID GUI控制设计
  4. samba服务的搭建
  5. 一文搞定哈希(六种构建、四种冲突解决方法、查找算法总结)
  6. 【ASP.NET】服务器控件大演练与实例分析
  7. 重邮2019计算机考研复试名单,重庆邮电大学2019年硕士研究生招生复试通知
  8. ​上海AI Lab罗格斯大学港中文提出CLIP-Adapter,用极简方式微调CLIP中的最少参数!...
  9. MyBatis学习总结(13)——Mybatis查询之resultMap和resultType区别
  10. centos 更新内核步骤
  11. Matlab|Simulink打开mdl/slx等文件报错:lnvalid block diagram name supplied. Valid block diagram names ...
  12. 微软推送补丁的服务器叫什么,即将大规模推送: 微软介绍KB4023057易升补丁相关功能...
  13. 网易电子邮箱的文档功能是什么?
  14. MariaDB数据库导出导入
  15. DP/eDP协议学习--视频传输格式
  16. 关于本地磁盘“介质受写入保护”的解决
  17. 交叉验证(s折、分层、留一法)
  18. 【linux测试必背| tcpdump】命令行抓包神器 | tcpdump抓取post请求并显示详细参数
  19. 戴老师论文阅读:Two-Timescale Channel Estimation for Reconfigurable Intelligent Surface Aided Wireless...
  20. 周鸿伟鸿蒙系统,周鸿袆正式宣布!鸿蒙系统开源比较好,将全力支持华为新系统...

热门文章

  1. 【深度学习】Pytorch实现CIFAR10图像分类任务测试集准确率达95%
  2. 运营商悄悄展开流量价格战,中国电信祭出29元含100GB流量卡
  3. RGB和YUV视频存储格式
  4. 美素将进入中国空间站,以太空科技打造“国货之光”
  5. 计算机物联网前沿技术汇总
  6. java计算机毕业设计个性化穿搭推荐系统MyBatis+系统+LW文档+源码+调试部署
  7. MYSQL数据库乐观锁之设计version字段
  8. 做一个迷你播放器放在桌面
  9. 让图片和文字在一行中垂直居中对齐的方法
  10. Vpp和dBm的转换