python n个list如何组成矩阵_通过学习在processing中操作图片,掌握python 列表操作...

237f4465abb74176a4f8f2fefff5eb0d.png

这次的教学非常简单,只需要安装了python模式的processing就可以(安装教程见专栏目录)。我从网上找了一个比100*100稍微大一点的图片,你可以也找一个。然后我们就可以一起开始今天的学习啦~(请先阅读本专栏中的processing入门教程部分)

35c18e817c946ed6cceb07a2611b2bf3.png
本专栏中的processing入门教程部分

关于图片:图片请找一个类似大小的,然后放在processing工程的文件夹中。打开某个processing工程文件夹的快捷方法是这样的:先新建一个空白processing文件并保存,然后在速写本中就能找到“打开程序目录”了。

0abf076faae52362b3ae13670f0b5243.png
打开程序目录

processing读取并展示图片

def 

上面就是一个完整的小程序啦。

54bcc669f986886eaeabe4b1d58157e0.png

操作图片的像素向量

def 

这里用到的图片相关的内置函数有点多,但是不难理解。我们逐个讲解:

img.pixels 是存储图片像素的列表,每个像素用一个color常量表示。

img.loadPixels() : 用于产生img.pixels。执行了这一句之后,img.pixels 才能被正常访问。

img.updatePixels():让processing根据我们对img.pixels的更改,来更改对应的图片。注意让list的大小在更改后保持和原先一致。

而color(0, 0, 0)中的三个值分别代表了RGB的一个值,并返回一个颜色常量。

在这个程序里,我们把像素矩阵中的前1000个点涂黑,效果如下:

93e422e80f74db832e2f5fbed3ef4af3.png
遮挡上边部分

向量和矩阵来回转化

可能在上一部分中,当我说到“像素向量”的时候,有一部分机智的同学就会有疑问了:“像素不应该是组成一个矩阵,也就是列表的列表吗?”。我们先看一下官方文档中对于img.pixels的描述:

8806688ee5337e350fbcd028b6135f29.png
img.pixels

然后再结合上个程序的效果,我们大胆猜测,这个向量代表的意思是把图片中的矩阵一行行的拼接成一个向量。我们可以写一个程序验证一下:

def 

请自己运行观看效果,这里只提供一个截图:

6379cd55d2615e80fc82e95e3ac88a65.png
动态遮挡

从这个动画可以看出,img.array究竟是以怎样的方式表示一个图片的。其中用到了变色的小技巧,不熟悉的同学可以把颜色用color(0, 0, 0)代替。

那么我们到这里就把像素向量怎么和图片像素的对应关系给搞清楚了。现在我们就写一个函数来做图片像素向量和普通矩阵(列表的列表)之间的转换。

def 

这就是我写出的函数。整个函数非常的pythonic。感兴趣的同学可以自己测试一下这两个函数,下面我们直接使用这两个函数做进一步的编程。

程序:遮挡住图片的左边部分

def 

539f38a627968e0c10ba7dde6a901082.png
遮挡左边部分

让图片动起来

有了上个章节中的两个向量矩阵转换函数,我们就可以做更加更加复杂的操作了。比如说,让图片进行循环滚动:

# 把上个程序中的draw()函数替换成这个

通过调用python列表的pop()和insert()方法,我们就实现了让图片滚动起来。列表是不是很强大呢?(请自行运行观看效果)

让苹果快速滚动飞起来

好了,我们不仅要让苹果循环滚动起来,还要让苹果滚得快到飞起。(苹果:“我太难了”)

# 把上个程序中的draw()函数替换成这个

这个程序的原理就是,当一个物体快速移动的时候,人眼是能够自动“补充画面帧数”的,所以我们不再一个一个像素的滚动,而是每次直接把n列像素从一边拿下来接到另一边。(通过在setup()中设置frameRate()能够控制程序更新速度)

a6cb40fc63788966690db0d6404d1278.png
快速滚动的苹果https://www.zhihu.com/video/1175124935423574016

思考题

如何实现快速的让苹果移出画面呢?你有没有其他更有意思的主意呢?

恰饭时间

强烈推荐《python基础教程》,点赞加关注专栏,可以获得作者认真标注而且手动加详细目录的pdf电子版文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

六、PHP框架Laravel学习笔记——响应设置和重定向

一.响应设置 路由和控制器处理完业务都会返回一个发送到浏览器的响应:return;比如字符串会直接输出,而数组则会输出 json 格式,本身是 Response 对象; return [1, 2, 3]; //输出 json 格式 return respo…

论文阅读 - TransNet and TransNet V2

文章目录1 概述2 模型结构简述2.1 TransNet2.2 TransNet V23 数据集的构建4 模型效果5 参考文献1 概述 有些时候,一段视频是由多段短视频拼接而成的。拼接可以是直接拼接(硬拼接,见图2),也可以是由一个转场过渡拼接&a…

工厂方法模式及php实现

工厂方法模式: 工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共…

Chapter7-8_Deep Learning for Constituency Parsing

文章目录1 什么是Constituency Parsing2 解决方案2.1 Chart-based Approach2.2 Transition-based Approach2.3 Grammer as Foreign Language本文为李弘毅老师【Deep Learning for Constituency Parsing】的课程笔记,课程视频youtube地址,点这里&#x1f…

html插入flash代码_初学者必备Web开发APP,支持代码补全,一键插入代码,厉害了!...

新手学前端神器,HTML代码补全功能太牛了!讲过学习后端的许多优秀APP,这次来推荐一下前端用的软件。前端,包含了HTMLCSSJavaScript这一整套的流程,缺一不可。其实,市面上用来编写前端的优秀APP有很多&#x…

七、PHP框架Laravel学习笔记——资源控制器

一.资源控制器 声明:资源控制器是某个特定场景下的产物,完全理解需要 PHP 项目基础;比如开发过博客系统,留言帖子系统之类,具有类似思维,否则你懂的…;只是学习了 PHP 基础&#xf…

留言板练习

这个练习做下来发现大体的步骤怎么走怎么做基本清晰&#xff0c;能实现可是做的很糙&#xff0c;没有老师细致……好多需要判断的地方没有想到 denglu.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DT…

Chapter7-9_Deep Learning for Dependency Parsing

文章目录1 什么是Dependency Parsing2 模型结构本文为李弘毅老师【Deep Learning for Dependency Parsing】的课程笔记&#xff0c;课程视频youtube地址&#xff0c;点这里&#x1f448;(需翻墙)。 下文中用到的图片均来自于李宏毅老师的PPT&#xff0c;若有侵权&#xff0c;必…

八、PHP框架Laravel学习笔记——表单伪造和 CSRF 保护

一&#xff0e;表单伪造 之前一直用的 GET 请求方式&#xff0c;而表单可以实现 POST 方式&#xff0c;我们来实验下&#xff1a; 先在 TaskController 创建两个方法&#xff0c;一个表单页&#xff0c;一个接受表单数据路由&#xff1b; public function form() { return v…

高通的快充协议_高通:后续骁龙旗舰将标配100W快充

高通于昨晚正式推出了Quick Charge 5充电解决方案&#xff0c;经过3年时间的准备&#xff0c;高通这一次在Quick Charge快充的升级可谓重磅&#xff0c;在功率上实现了重大突破&#xff0c;达到了100W。官方数据显示&#xff0c;高通Quick Charge 5的性能较前代平台显著提升&am…

团队作业(六)

团队项目设计文档 1、系统框图 用户对手机进行设置&#xff0c;包括时间和解锁方式轨迹。手机对用户进行闹铃提醒&#xff0c;同时提供解锁方式。手机对数据库发送数据以保存响铃时间&#xff0c;数据库对手机提供响铃时间信息。 系统框图如下&#xff1a;2、系统结构框图 项目…

Chapter7-10_Deep Learning for Question Answering (1/2)

文章目录1 什么是Question Answering(QA)2 按答案分类2.1 答案是一个单词2.2 答案是多个选项2.3 答案是source中的一段话2.4 答案是生成的一段话3 按source分类3.1 source是网页3.2 source是图片或者视频3.3 source是语音3.4 source是视频本文为李弘毅老师【Deep Learning for …

十、PHP框架Laravel学习笔记——数据库配置入门

一&#xff0e;配置数据库 框架支持原生、查询构造器和 Eloquent ORM(关系型对象映射器)来操作数据库&#xff1b; 数据库的配置在 config/database.php&#xff0c;如果是本地可以直接配置.env 文件&#xff1b; 我们通过.env 文件配置数据库连接的相关信息&#xff0c;以提…

selenium firefox驱动_Python3+selenium配置常见报错解决方案

第一个报错问题geckodriver executable needs to be in PATH1.1如果启动浏览器过程中报如下错误&#xff1a;Traceback (most recent call last):File "", line 1, in <module>File "D:\test\python3\lib\site-packages\selenium\webdriver\firefox\webdr…

Chapter7-11_Deep Learning for Question Answering (2/2)

文章目录1 Simple Question: Match & Extract2 Complex Question: Reasoning3 Dialogue QA本文为李弘毅老师【Deep Learning for Question Answering (2/2)】的课程笔记&#xff0c;课程视频youtube地址&#xff0c;点这里&#x1f448;(需翻墙)。 下文中用到的图片均来自…

十一、PHP框架Laravel学习笔记——构造器的查询.分块.聚合

一&#xff0e;构造器查询 table()方法引入相应的表&#xff0c;get()方法可以查询当前表的所有数据&#xff1b; //获取全部结果 $users DB::table(users)->get(); first()方法&#xff0c;可以获取到第一条数据&#xff1b; //获取第一条数据 $users DB::table(user…

mac 批量清空文件夹文件_【XSS 聚宝瓶】文件及文件夹批量改名工具

置顶公众号&#xff0c;否则不能及时收到新文章推荐给朋友&#xff0c;让朋友也能收到免费文章在公众号发送函数或应用的关键字&#xff0c;即可免费获取对应教程一、功能说明我们在日常办公的时候&#xff0c;经常会碰到文件名不规范&#xff0c;想要整理很不方便&#xff0c;…

论文阅读 - Beat Tracking by Dynamic Programming

文章目录1 概述2 总体框架3. 计算Onset Strength Envelope4 计算全局的Tempo5 基于动态规划计算beats6 参考文献1 概述 有背景音乐的短视频拼接时&#xff0c;如果两个视频的拼接点刚好在背景音乐的某个节拍点上&#xff0c;那么合成的视频看起来&#xff0c;听起来&#xff0…

十二、PHP框架Laravel学习笔记——构造器的查询表达式

一&#xff0e;select 查询 select()方法可以制定你想要的列&#xff0c;而不是所有列&#xff1b; //设置显示的列&#xff0c;设置列别名 $users DB::table(users)->select(username as name, email)->get(); addSelect()方法&#xff0c;可以在你基础的查询构造器…

python解释器的工作原理_Python GIL全局解释器锁详解(深度剖析)

通过前面的学习&#xff0c;我们了解了 Pyton 并发编程的特性以及什么是多线程编程。其实除此之外&#xff0c;Python 多线程还有一个很重要的知识点&#xff0c;就是本节要讲的 GIL。 GIL&#xff0c;中文译为全局解释器锁。在讲解 GIL 之前&#xff0c;首先通过一个例子来直观…