zoukankan      html  css  js  c++  java
  • 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 Image
    
    def mirror(im):
        width,height = im.size
        half = 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 im
    
    imageurl = './images/xg.jpg'
    image = Image.open(imageurl)
    image.show()
    image = mirror(image)
    image.show()
    

      效果:

              

      在来一张上下的

      

  • 相关阅读:
    剑指offer-二维数组中的查找
    TF-IDF(term frequency–inverse document frequency)
    Java实现中文字符串的排序功能
    当前课程
    【R】资源整理
    CentOS相关
    【转】Setting up SDL Extension Libraries on MinGW
    【转】Setting up SDL Extension Libraries on Visual Studio 2010 Ultimate
    【转】Setting up SDL Extension Libraries on Code::Blocks 12.11
    【转】Setting up SDL Extension Libraries on Visual Studio 2019 Community
  • 原文地址:https://www.cnblogs.com/ThrEcho/p/4957790.html
Copyright © 2011-2022 走看看