乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Python圖形圖像處理庫的介紹之Image模塊

       昵稱QAb6ICvc 2013-02-19

      Image模塊的介紹

      創(chuàng)建一個新的圖片

      Python代碼 復(fù)制代碼 收藏代碼
      1. Image.new(mode, size)   
      2. Image.new(mode, size, color)  

       


      層疊圖片
      層疊兩個圖片,img2和img2,alpha是一個介于[0,1]的浮點數(shù),如果為0,效果為img1,如果為1.0,效果為img2。當(dāng)然img1和img2的尺寸和模式必須相同。這個函數(shù)可以做出很漂亮的效果來,而圖形的算術(shù)加減后邊會說到。

      Python代碼 復(fù)制代碼 收藏代碼
      1. Image.blend(img1, img2, alpha)  



       
      composite可以使用另外一個圖片作為蒙板(mask),所有的這三張圖片必須具備相同的尺寸,mask圖片的模式可以為“1”,“L”,“RGBA”(關(guān)于模式請參看前一篇)

      Python代碼 復(fù)制代碼 收藏代碼
      1. Image.composite(img1, img2, mask)  



       

      轉(zhuǎn)換圖形模式
      下面看一個比較牛的方法convert,這個方法可以將圖片在不同的模式間進(jìn)行轉(zhuǎn)換,在將灰度圖轉(zhuǎn)換成二值圖時,所有的非零值被設(shè)置為255(白色)?;叶葓D的轉(zhuǎn)換方式采用的是這個算法:

      寫道
      L = R*299/1000 + G*587/1000 + B*114/1000
       

      (此為ITU-R 610-2 亮度轉(zhuǎn)換方程)

       



       




       
      點操作
      img.point(function),這個function接受一個參數(shù),且對圖片中的每一個點執(zhí)行這個函數(shù),這個函數(shù)是一個匿名函數(shù),在python之類的函數(shù)式編程語言中,可以使用
      lambda表達(dá)式來完成,如

      Python代碼 復(fù)制代碼 收藏代碼
      1. out = img.point(lambda i : i*1.2)#對每個點進(jìn)行20%的加強  


      如果圖片是“I”或者“F”模式,那么這個lambda必須使用這樣的形式

       

      Python代碼 復(fù)制代碼 收藏代碼
      1. argument * scale + offset   
      2.   
      3. e.g   
      4. out = img.point(lambda i: i*1.2 + 10)  
       



      透明通道的使用
      putalpha(alpha)
      這個方法是一個神奇的方法,你可以將一個圖片(與原圖尺寸相同)寫入到原圖片的透明通道中,而不影響原圖片的正常顯示,可以用于信息隱藏哦。當(dāng)然,前提是原
      始圖片有透明通道。不過就算不是也沒有多大關(guān)系,因為有PIL提供的convert功能,可以把一個圖片先轉(zhuǎn)換成RGBA模式,然后把要隱藏的信息文件轉(zhuǎn)成“L”或者“1”模
      式,最后使用這個putalpha將其疊加。而在圖片的使用方,只需要簡單的抽取其中的透明通道就可以看到隱藏信息了,哈哈。

      Python代碼 復(fù)制代碼 收藏代碼
      1. def hideInfoInImage(img, info):   
      2.     if img.mode != "RGBA":   
      3.         img = img.convert("RGBA")   
      4.     if info.mode != "L" and info.mode != "1":   
      5.         info = info.convert("L")   
      6.     img.putalpha(info)   
      7.   
      8.     return img  

       


      測試之

      Python代碼 復(fù)制代碼 收藏代碼
      1. if __name__ == "__main__":   
      2.     img = Image.open("green.png")   
      3.     band = Image.open("antelope_inhalf.jpg")   
      4.   
      5.     img = hideInfoInImage(img, band)   
      6.     img.show()#可以看到,原圖片沒有顯式變化   
      7.     img.split()[3].show()#抽取出透明通道中的圖片并顯示  



       

       

      在windows系統(tǒng)中,默認(rèn)的圖片瀏覽器會把透明通道附加,可能會影響效果,可以用別的圖片瀏覽器查看。

      Python代碼 復(fù)制代碼 收藏代碼
      1. def randomPalette(length, min, max):   
      2.     return [ randint(min, max) for x in xrange(length)]  


      調(diào)色板的使用

      Python代碼 復(fù)制代碼 收藏代碼
      1. putpalette(palette)   
      2.     img = Image.open("green.png").convert("L")   
      3.     #img.show()   
      4.     l = randomPalette(7680255)   
      5.     img.putpalette(l)   
      6.     img.show()  



       
      現(xiàn)將green.png轉(zhuǎn)成灰度圖,然后自定義一個隨機調(diào)色板著色,可以看到這個效果??赡苡腥嗽谙脒@個圖形處理的作用,其實作用還是比較大的,做模式識別,人臉檢
      測等等操作事,真彩的圖片往往很難處理,一個解決方案就是處理成灰度圖或者二值圖,一來可以去掉部分干擾,二來可以減少需要處理的數(shù)據(jù)量(提高效率)。

      圖片轉(zhuǎn)換(扭曲,映射)
      transform()方法的使用

      Python代碼 復(fù)制代碼 收藏代碼
      1. transform(size, method, data)  


      method參數(shù):

       

      EXTENT 剪一個矩形出來(用以剪切,拉伸,壓縮等操作)
      AFFINE 幾何防射轉(zhuǎn)換
      QUAD 將一個四邊形映射到一個矩形
      MESH 將多個四邊形映射到一個操作



      在EXTENT參數(shù)的情況下,data是一個四元組(x0,y0,x1,y1),表示輸入圖片中需要處理的區(qū)域,size為新圖片的尺寸,是一個二元組(width, height)
      用途:剪貼,拉伸,壓縮等操作

       



       
      在AFFINE參數(shù)的情況下,data是一個六元組(a,b,c, d,e,f),其中包含affine轉(zhuǎn)置矩陣的前兩行。對于輸出圖片的每個像素(x,y),會被新值(ax+by+c, dx+ey+f)替換。
      用途:反轉(zhuǎn),旋轉(zhuǎn),剪切等

       



       

      在QUAD參數(shù)的情況下,data是一個八元組(x0,y0,x1,y1,x2,y2,x3,y3)表示源四邊形的四個定點的坐標(biāo)值.MESH方式跟QUAD的效果相當(dāng),不過是對多個四邊形進(jìn)行映射操作.

       


       

      transpose

      Python代碼 im.transpose(method)  

      method參數(shù):

       

      FLIP_LEFT_RIGHT 左右倒置
      FLIP_TOP_BOTTOM 上下倒置
      ROTATE_90 旋轉(zhuǎn)90度(逆時針)
      ROTATE_180 旋轉(zhuǎn)180度(逆時針)
      ROTATE_270 旋轉(zhuǎn)270度(逆時針)


      (360度?這個就不用轉(zhuǎn)了吧,呵呵)

       

      關(guān)于Image模塊就介紹到這里,還有一部分屬性,函數(shù)和方法沒有在此做分析,這部分比較簡單,如果想了解更多,可以參看pil的handbook。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多