PIL简单图片处理(上)

  自己看了下python,本来想照教程上一点一点学的,学了一会发现好没劲(教程本身质量很好),学python就是为了好玩,为什么还这么按部就班勒?果断google下python的爬虫(开始目的是这个),按照一很简单的demo,自己也写了个很简单的小程序(urllib2+re),爬美女吧的美女图片。其实爬图片本身并不难(一会儿就爬了一千都张),难的是图片质量参差不齐,怎么加以区别。质量包括图片本身的分辨率和图片的‘美感’,于是突然就想到了图像识别,把那些不美(搞笑图片和长的不美)的去掉,而且说干就干,虽然也是小白

  google下python图片操作,了解到PIL(python Image Lib),去官网下。windows版官方只有32位版,如果是64位的python好像还不兼容。。。我用的mac,下的源码。装之前还要装依赖,教程可以参考这里。中间遇到了‘include <X11/Xlib.h>’,可以参考这里。而且win版好像的show函数好像有问题,得改源码。。。反正各种问题,毕竟这么老了,感觉官方也放弃了,不过够用就行了

  PIL装好之后, 就可以开工了。当然啦,图像识别也不可能是一步到位的事,毕竟不是那么简单嘛

  首先就是对图片处理有个简单的概念。一张图片是由若干像素组成,而一个像素则由很多分量(通道)组成,每种分量大小的共同作用于一个像素,而成千上万个像素则组成了宏观上的图片,分量数和每个分量的位数共同决定了图片的位数。比如一张分辨率为1920*1080的美女图片,每一行就有1920个像素,每一列有1080个像素,那么总共就有1920X1080个像素。而一个像素最常见的是由R(red),G(green),B(blue)分量(通道)组成。而每一个分量一般用8位bit来表示,所以每一个分量就有2^8 = 256(0~255)种可能。分量数为3,每个分量有8位,图片就为3X8=24位。而有一种32位的图就是在24位的上加上一个alpha(透明度)分量,比如png格式的图片就可以表示一张背景透明的图。现在我们可以计算下,一张这样24位,1920*1080分辨率的图片的大小了。1920X1080*24 ~ 6MB,可是我们一般遇到的图片都不会有这么大,那是压缩之后的结果,jpeg就是一种压缩率可以很高的图片格式,而且是有损压缩(据说损失的都不重要)。

  有了图片的基础知识之后,接下来就可以开始了。图片的处理也就是将某些指定的像素设为特定的值而已了

  下面举个小demo:

  预期效果:对称效果,让图片的左边与右边对称,可以恶搞别人

  示例代码:

  

import PIL from Imagedef mirror(im):width,height = im.sizehalf = int(width/2)for x in range(half):for y in range(height):origin = im.getpixel((width-x-1,y))im.putpixel((x,y),origin)return imimageurl = './images/xg.jpg'
image = Image.open(imageurl)
image.show()
image = mirror(image)
image.show()

  效果:

          

  在来一张上下的

  

转载于:https://www.cnblogs.com/ThrEcho/p/4957790.html

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

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

相关文章

方舟服务器制作修改,ARK方舟:生存进化服务器禁止物品制造的修改方法

ARK方舟:生存进化服务器禁止物品制造的修改方法代码对应的文件目录:文件:Game.ini框架:[/script/shootergame.shootergamemode]例如禁用C4遥控器代码为:ConfigOverrideItemCraftingCosts(ItemClassString"PrimalItem_WeaponC4_C",BaseCraftingResourceRequirements((…

Java中ArrayList的使用

ArrayList类是一个特殊的数组--动态数组。来自于System.Collections命名空间&#xff1b;通过添加和删除元素&#xff0c;就可以动态改变数组的长度。 优点&#xff1a; 1、支持自动改变大小 2、可以灵活的插入元素 3、可以灵活的删除元素 局限&#xff1a; 比一般的数组的速度…

mallco动态分配_malloc动态分配的内存的生存周期是多少?

曾经有一个朋友提过这样一个问题&#xff0c;malloc动态分配的内存的生存周期是多少当时直接回答&#xff0c;当然是在调用free进行释放之前阿!!但回头我仔细想过这个问题&#xff0c;在free调用之前那段范围内&#xff0c;但free只有一个指针参数&#xff0c;它是如何知道要释…

中兴中心管理服务器fxh3120,中兴多媒体业务中心ZXMS80

运营支撑层&#xff1a; 提供面向视讯用户的客服中心和面向管理员的业务中心、网管中心。客服中心提供会议预约、会议控制、帐单查询、意见反馈等功能。业务中心分为业务受理中心、业务管理中心、认证计费中心。其中业务受理中心实现开户、放号及收费等功能&#xff1b;业务管理…

随机森林经典文

原文链接 转载于:https://www.cnblogs.com/luoganttcc/p/10525324.html

python namespace unique_Python使用uuid库生成唯一标识ID

uuid是128位的全局唯一标识符(univeral unique identifier)&#xff0c;通常用32位的一个字符串的形式来表现。有时也称guid(globalunique identifier)。python中自带了uuid模块来进行uuid的生成和管理工作。python中的uuid模块基于信息如MAC地址、时间戳、命名空间、随机数、伪…

SQL Server 2008空间数据应用系列四:基础空间对象与函数应用

SQL Server 2008空间数据应用系列四&#xff1a;基础空间对象与函数应用 原文:SQL Server 2008空间数据应用系列四&#xff1a;基础空间对象与函数应用友情提示&#xff0c;您阅读本篇博文的先决条件如下&#xff1a; 1、本文示例基于Microsoft SQL Server 2008 R2调测。 2、具…

HBase-1.2.4LruBlockCache实现分析(一)

一、简介 BlockCache是HBase中的一个重要特性&#xff0c;相比于写数据时缓存为Memstore&#xff0c;读数据时的缓存则为BlockCache。 LruBlockCache是HBase中BlockCache的默认实现&#xff0c;它采用严格的LRU算法来淘汰Block。 二、缓存级别 目前有三种缓存级别&#xf…

c .net ajax,Asp.net mvc 2中使用Ajax的三种方式

在Asp.net MVC中&#xff0c;我们能非常方便的使用Ajax。这篇文章将介绍三种Ajax使用的方式&#xff0c;分别为原始的Ajax调用、Jquery、Ajax Helper。分别采用这三种方式结合asp.net mvc去实现一个史上最简单的留言板。首先看一下原始的Ajax的调用的:定义CommentController&am…

爆款AR游戏如何打造?网易杨鹏以《悠梦》为例详解前沿技术

本文来自网易云社区。 7月31日&#xff0c;2018云创大会游戏论坛在杭州国际博览中心103B圆满举行。本场游戏论坛聚焦探讨了可能对游戏行业发展有重大推动的新技术、新实践&#xff0c;如AR、区块链、安全、大数据等。 网易AR游戏生态合作负责人杨鹏表示&#xff0c;传统游戏模式…

景深决定照相机什么特性_照相机光圈与景深的关系

展开全部「光圈」&#xff0c;光圈是一个用来控制光线透过镜头&#xff0c;进入机身636f70793231313335323631343130323136353331333264663664内感光面的光量的装置&#xff0c;它通常是在镜头内。表达光圈大小我们是用f值。光圈f值镜头的焦距/镜头口径的直径从以上的公式可知要…

润乾V4导出TXT时自定义分隔符

&#xfeff;&#xfeff;◆ 背景说明 报表中&#xff0c;导出text时&#xff0c;默认没有分隔符&#xff1b;应用中对导出Text&#xff0c;希望能自定义分隔符。在tag中定义了 textDataSeparator属性&#xff0c;让用户在导出Text时自定义分隔符&#xff0c;从而确保满足应用…

Spark学习体会

在去年图计算工作中&#xff0c;和公司里实习的博士生尝试过Spark后&#xff0c;发现Spark比Hadoop在计算速度上后很大的提高。Spark的计算使用Scala语言编写代码&#xff0c;其中图计算用到了GraphX。对Spark技术的学习已经非常重要。 最近半年多时间里&#xff0c;经常看…

fastadmin自定义按钮不是ajax,Fastadmin 自定义按钮实现审核功能

功能描述新增自定义审核按钮&#xff0c;点击审核按钮后&#xff0c;按钮变为取消审核按钮&#xff0c;同理点击取消审核按钮后&#xff0c;按钮变为审核按钮实现功能如下图微信图片_20200827112914.png上代码{field: operate, title: __(Operate), table: table, events: Tabl…

函数的命名空间以及作用域

转载于:https://www.cnblogs.com/mpfei/p/9451208.html

python获取路由器数据包pppoe_PPPoE协议***4:如何得到PPPoE服务器的mac地址

在局域网中&#xff0c;怎样得到PPPoE服务器的mac地址是一件头疼的事情&#xff0c;特别是在windows环境下&#xff1b;得到PPPoE服务器mac地址的实现方法有两种&#xff1a;1.在windows下&#xff0c;我们运行wireshark软件&#xff0c;可以得到所有进出网卡的数据包格式和内容…

使用vs自带的性能诊断工具

visual studio是个强大的集成开发环境&#xff0c;内置了程序性能诊断工具。下面通过两段代码进行介绍。 static void Main( string[] args){Test1();Test2();Console.ReadKey();}protected static void Test1(){Stopwatch sp new Stopwatch();sp.Start();string str "&…

Avg_row_length是怎么计算的?

通过一下命令我们可以获取表的使用情况&#xff1a; rootmysql 05:49:33>show table status like tbname\G 结果&#xff1a; *************************** 1. row ***************************Name: tbnameEngine: InnoDBVersion: 10Row_format: CompactRows: 3425Avg_row_…

1.用代码演示String类中的以下方法的用法 (2018.08.09作业)

1 public class Test_001 {2 3 public static void main(String[] args) {4 String a "德玛西亚!";5 String b "";6 String c "aBcDefG";7 String d " 123321 ";8 System.out.println…

【Java基础】List迭代并修改时出现的ConcurrentModificationException问题

现在有一个需求&#xff0c;要遍历一个List&#xff0c;假设List里面存储的是String对象&#xff0c;然后该需求事判断里面如果有某个对象&#xff0c;则添加一个新的对象进去。自然&#xff0c;我们得出下面的代码&#xff1a; import java.util.ArrayList; import java.util.…