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.pswp.cn/news/397278.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397278.shtml
英文地址,請注明出處:http://en.pswp.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.…