A. 如何使用python的Pandas庫繪制折線圖
我們經常會使用Python的Pandas繪制各種數據圖形,那麼如何使用它繪制折線圖呢?下面我給大家分享一下。
Pycharm
首先我們需要打開Excel軟體准備需要的數據,這里多准備幾列數據,一列就是一條折線,如下圖所示
然後我們打開Pycharm軟體,新建Python文件,導入Pandas庫,接著將Excel中的數據讀取進數據集緩存,如下圖所示
接下來我們利用plot方法繪制折線圖,如下圖所示,這里只添加了一列標題
運行文件以後我們就可以看到折線圖顯示出來了,但是比較的簡單,下面我們逐漸的豐富它
然後在plot方法中將excel裡面的多列標題都添加進來,如下圖所示
這次在運行文件的時候我們就可以看到折線圖上有多條線了,如下圖所示
接下來我們在為折線圖設置標題,X,Y坐標軸的內容,如下圖所示
然後通過plot方法下面的area方法對折線圖的空白區域進行疊加填充,如下圖所示
最後我們運行完善好後的文件,就可以看到如下圖所示的折線圖了,到此我們的折線圖繪制也就完成了
B. 怎樣使用Python圖像處理
Python圖像處理是一種簡單易學,功能強大的解釋型編程語言,它有簡潔明了的語法,高效率的高層數據結構,能夠簡單而有效地實現面向對象編程,下文進行對Python圖像處理進行說明。
當然,首先要感謝「戀花蝶」,是他的文章「用Python圖像處理 」 幫我堅定了用Python和PIL解決問題的想法,對於PIL的一些介紹和基本操作,可以看看這篇文章。我這里主要是介紹點我在使用過程中的經驗。
PIL可以對圖像的顏色進行轉換,並支持諸如24位彩色、8位灰度圖和二值圖等模式,簡單的轉換可以通過Image.convert(mode)函數完 成,其中mode表示輸出的顏色模式。例如''L''表示灰度,''1''表示二值圖模式等。
但是利用convert函數將灰度圖轉換為二值圖時,是採用固定的閾 值127來實現的,即灰度高於127的像素值為1,而灰度低於127的像素值為0。為了能夠通過自定義的閾值實現灰度圖到二值圖的轉換,就要用到 Image.point函數。
深度剖析Python語法功能
深度說明Python應用程序特點
對Python資料庫進行學習研究
Python開發人員對Python經驗之談
對Python動態類型語言解析
Image.point函數有多種形式,這里只討論Image.point(table, mode),利用該函數可以通過查表的方式實現像素顏色的模式轉換。其中table為顏色轉換過程中的映射表,每個顏色通道應當有256個元素,而 mode表示所輸出的顏色模式,同樣的,''L''表示灰度,''1''表示二值圖模式。
可見,轉換過程的關鍵在於設計映射表,如果只是需要一個簡單的箝位值,可以將table中高於或低於箝位值的元素分別設為1與0。當然,由於這里的table並沒有什麼特殊要求,所以可以通過對元素的特殊設定實現(0, 255)范圍內,任意需要的一對一映射關系。
示例代碼如下:
import Image # load a color image im = Image.open(''fun.jpg'') # convert to grey level image Lim = im.convert(''L'') Lim.save(''fun_Level.jpg'') # setup a converting table with constant threshold threshold = 80 table = [] for i in range(256): if i < threshold: table.append(0) else: table.append(1) # convert to binary image by the table bim = Lim.point(table, ''1'') bim.save(''fun_binary.jpg'')
IT部分通常要完成的任務相當繁重但支撐這些工作的資源卻很少,這已經成為公開的秘密。任何承諾提高編碼效率、降低軟體總成本的IT解決方案都應該進行 周到的考慮。Python圖像處理所具有的一個顯著優勢就是可以在企業的軟體創建和維護階段節約大量資金,而這兩個階段的軟體成本佔到了軟體整個生命周期中總成本 的50%到95%。
Python清晰可讀的語法使得軟體代碼具有異乎尋常的易讀性,甚至對那些不是最初接觸和開發原始項目的程序員都 能具有這樣的強烈感覺。雖然某些程序員反對在Python代碼中大量使用空格。
不過,幾乎人人都承認Python圖像處理的可讀性遠勝於C或者Java,後兩 者都採用了專門的字元標記代碼塊結構、循環、函數以及其他編程結構的開始和結束。提倡Python的人還宣稱,採用這些字元可能會產生顯著的編程風格差 異,使得那些負責維護代碼的人遭遇代碼可讀性方面的困難。轉載
C. 零基礎學python怎麼打開圖片
介紹python中打開圖片的流程。
工具/原料
python3.6
pycharm
方法/步驟
首先,導入PIL模塊。
然後,存一個圖片所在路徑變數,本例中圖片在py文件所在的目錄下,所以使用相對路徑時直接用圖片名即可。
# 通過圖片路徑打開圖片image = Image.open(path)
# 列印圖片信息print(image.size, image.format)
# 設置大小image.thumbnail((100, 200))
# 保存image.save('3.jpg')
END
注意事項
也可以下載第三方模塊pillow,方便快速的處理圖片
相關教程推薦:Python視頻教程以上就是小編分享的關於零基礎學python怎麼打開圖片的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!
D. Python 爬蟲爬坑路(二)——B站圖片,咸魚的正確 GET 姿勢
昨天在寫完 入門級爬蟲之後 ,馬上就迫不及待的著手開始寫 B站的圖片爬蟲了,真的很喜歡這個破站呢 (〜 ̄△ ̄)〜
這里不涉及到 Python 爬蟲的高級技巧,沒有使用框架,沒有考慮反爬機制,沒有使用非同步IO技術,因為這些,我都不會!
我們選定 B站的 動畫區 進行測試,打開後我們發現有好多好多圖....
但當我們使用 F12 查看這些圖片的時候,發現並沒有圖片的地址...
這就是目前大多網站使用的 Ajax 技術動態載入數據的鍋,可遇到這種情況這么辦呢?別急別急,我們知道這些圖片的地址一定是需要載入的,而目前常見WEB傳輸數據的基本就是方式 XML 和 Json (其實是我就知道這兩種...),那好我們去看看請求的 XML 和 Json 文件。
以下省略查找過程....
我們發現 B站的圖片地址是保存在 Json 裡面的,ok,我們保存好這個 json 地址:
https://api.bilibili.com/x/web-interface/dynamic/region?callback=jQuery172071087417824369_1505783866149&jsonp=jsonp&ps=15&rid=24&_=1505783866453
這個是 MAD·AMV 最新動態的 Json 文件,利用上面相同的方法,我們找到 3D區、短片·配音區、綜合區 以及 右邊排行部分 的相應 json 地址。
好在 Chrome 瀏覽器提供了一個 Preview 功能,自動幫我們整理好 數據,如下
這樣就很清晰啦,我們只需要一層層解析拿到 pic 即可。於是我們這樣寫:
我們利用 requests 內置的 json 解碼器,很不幸,報錯:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
它提示說:解碼 Json 數據的時候出了問題,可能是在 第一行 第一列,咦?好奇怪,剛才不是用瀏覽器看過結構了嗎,沒毛病啊,怎麼還在報錯:Σ(  ̄□ ̄||)
別急別急,我們先看看原始的 Json 數據長啥樣?用 瀏覽器打開上面的 json 鏈接就可以了。
(/TДT)/ 前面的那些字母是幹嘛的呀,為什麼還有括弧啊!
所以我們知道了 Json 解析錯誤 的原因啦:後面在處理的時候把前面的這部分刪掉就好啦,另外我們也發現了 archives 這個關鍵字,我們在上一張圖看見過的哦,有印象嗎?啊,你說沒有呀,沒關系,這里你只需要記著它是一個 List 的數據類型就好了呀!
為了防止被當作是 惡意訪問 從而被封 IP,這里我們選擇犧牲時間,取巧使用 sleep(x) ,讓其等待一段時間之後再發出請求。
你可能會問我,呀,你這個,根本沒有代理、沒有混淆IP防止反爬、也沒有模擬 Ajax 請求動態抓取雲雲~
那我可以很負責的告訴你,你!走錯地方了!你要找的技術貼出門右拐!( ̄へ ̄)
我們恰巧使用的是 B站的 Ajax 技術,只要哪個視頻有了最新評論(或者是一下其它的條件),就會使用 Ajax 將最新的數據取出來。就像下面這樣:
所以可能在訪問人數多的時候,更新越快,越有可能獲得更多不同的圖片啦!
之後你就可以在吃飯的時候,把它掛起,然後吃飯回來就會發現有好多好多的圖片!(=・ω・=)
之後會陸續的更新自己爬蟲的爬坑過程,希望能夠找到小夥伴一起學習呀!
E. 如何使用python在一張圖片上畫左上角到右下角的對角線請提供詳細代碼 謝謝!
#-*-coding:utf-8-*-
fromPILimportImage
importImageDraw
#打開圖像
img=Image.open('i.jpg')
img_d=ImageDraw.Draw(img)
#兩個參數,前面是x,y坐標,後面是顏色
img_d.line(((0,0),img.size),(0,0,0))
#保存圖片
img.save('ii.jpg')
自己看看PIL庫吧
F. 10 個 Python 圖像編輯工具
以下提到的這些 Python 工具在編輯圖像、操作圖像底層數據方面都提供了簡單直接的方法。
-- Parul Pandey
當今的世界充滿了數據,而圖像數據就是其中很重要的一部分。但只有經過處理和分析,提高圖像的質量,從中提取出有效地信息,才能利用到這些圖像數據。
常見的圖像處理操作包括顯示圖像,基本的圖像操作,如裁剪、翻轉、旋轉;圖像的分割、分類、特徵提取;圖像恢復;以及圖像識別等等。Python 作為一種日益風靡的科學編程語言,是這些圖像處理操作的最佳選擇。同時,在 Python 生態當中也有很多可以免費使用的優秀的圖像處理工具。
下文將介紹 10 個可以用於圖像處理任務的 Python 庫,它們在編輯圖像、查看圖像底層數據方面都提供了簡單直接的方法。
scikit-image 是一個結合 NumPy 數組使用的開源 Python 工具,它實現了可用於研究、教育、工業應用的演算法和應用程序。即使是對於剛剛接觸 Python 生態圈的新手來說,它也是一個在使用上足夠簡單的庫。同時它的代碼質量也很高,因為它是由一個活躍的志願者社區開發的,並且通過了 同行評審(peer review)。
scikit-image 的 文檔 非常完善,其中包含了豐富的用例。
可以通過導入 skimage 使用,大部分的功能都可以在它的子模塊中找到。
圖像濾波(image filtering):
使用 match_template() 方法實現 模板匹配(template matching):
在 展示頁面 可以看到更多相關的例子。
NumPy 提供了對數組的支持,是 Python 編程的一個核心庫。圖像的本質其實也是一個包含像素數據點的標准 NumPy 數組,因此可以通過一些基本的 NumPy 操作(例如切片、 掩膜(mask)、 花式索引(fancy indexing)等),就可以從像素級別對圖像進行編輯。通過 NumPy 數組存儲的圖像也可以被 skimage 載入並使用 matplotlib 顯示。
在 NumPy 的 官方文檔 中提供了完整的代碼文檔和資源列表。
使用 NumPy 對圖像進行 掩膜(mask)操作:
像 NumPy 一樣, SciPy 是 Python 的一個核心科學計算模塊,也可以用於圖像的基本操作和處理。尤其是 SciPy v1.1.0 中的 scipy.ndimage 子模塊,它提供了在 n 維 NumPy 數組上的運行的函數。SciPy 目前還提供了 線性和非線性濾波(linear and non-linear filtering)、 二值形態學(binary morphology)、 B 樣條插值(B-spline interpolation)、 對象測量(object measurements)等方面的函數。
在 官方文檔 中可以查閱到 scipy.ndimage 的完整函數列表。
使用 SciPy 的 高斯濾波 對圖像進行模糊處理:
PIL (Python Imaging Library) 是一個免費 Python 編程庫,它提供了對多種格式圖像文件的打開、編輯、保存的支持。但在 2009 年之後 PIL 就停止發布新版本了。幸運的是,還有一個 PIL 的積極開發的分支 Pillow ,它的安裝過程比 PIL 更加簡單,支持大部分主流的操作系統,並且還支持 Python 3。Pillow 包含了圖像的基礎處理功能,包括像素點操作、使用內置卷積內核進行濾波、顏色空間轉換等等。
Pillow 的 官方文檔 提供了 Pillow 的安裝說明自己代碼庫中每一個模塊的示例。
使用 Pillow 中的 ImageFilter 模塊實現圖像增強:
OpenCV(Open Source Computer Vision 庫)是計算機視覺領域最廣泛使用的庫之一, OpenCV-Python 則是 OpenCV 的 Python API。OpenCV-Python 的運行速度很快,這歸功於它使用 C/C++ 編寫的後台代碼,同時由於它使用了 Python 進行封裝,因此調用和部署的難度也不大。這些優點讓 OpenCV-Python 成為了計算密集型計算機視覺應用程序的一個不錯的選擇。
入門之前最好先閱讀 OpenCV2-Python-Guide 這份文檔。
使用 OpenCV-Python 中的 金字塔融合(Pyramid Blending)將蘋果和橘子融合到一起:
SimpleCV 是一個開源的計算機視覺框架。它支持包括 OpenCV 在內的一些高性能計算機視覺庫,同時不需要去了解 位深度(bit depth)、文件格式、 色彩空間(color space)之類的概念,因此 SimpleCV 的學習曲線要比 OpenCV 平緩得多,正如它的口號所說,「將計算機視覺變得更簡單」。SimpleCV 的優點還有:
官方文檔 簡單易懂,同時也附有大量的學慣用例。
文檔 包含了安裝介紹、示例以及一些 Mahotas 的入門教程。
Mahotas 力求使用少量的代碼來實現功能。例如這個 Finding Wally 游戲 :
ITK (Insight Segmentation and Registration Toolkit)是一個為開發者提供普適性圖像分析功能的開源、跨平台工具套件, SimpleITK 則是基於 ITK 構建出來的一個簡化層,旨在促進 ITK 在快速原型設計、教育、解釋語言中的應用。SimpleITK 作為一個圖像分析工具包,它也帶有 大量的組件 ,可以支持常規的濾波、圖像分割、 圖像配准(registration)功能。盡管 SimpleITK 使用 C++ 編寫,但它也支持包括 Python 在內的大部分編程語言。
有很多 Jupyter Notebooks 用例可以展示 SimpleITK 在教育和科研領域中的應用,通過這些用例可以看到如何使用 Python 和 R 利用 SimpleITK 來實現互動式圖像分析。
使用 Python + SimpleITK 實現的 CT/MR 圖像配准過程:
pgmagick 是使用 Python 封裝的 GraphicsMagick 庫。 GraphicsMagick 通常被認為是圖像處理界的瑞士軍刀,因為它強大而又高效的工具包支持對多達 88 種主流格式圖像文件的讀寫操作,包括 DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM、TIFF 等等。
pgmagick 的 GitHub 倉庫 中有相關的安裝說明、依賴列表,以及詳細的 使用指引 。
圖像縮放:
邊緣提取:
Cairo 是一個用於繪制矢量圖的二維圖形庫,而 Pycairo 是用於 Cairo 的一組 Python 綁定。矢量圖的優點在於做大小縮放的過程中不會丟失圖像的清晰度。使用 Pycairo 可以在 Python 中調用 Cairo 的相關命令。
Pycairo 的 GitHub 倉庫 提供了關於安裝和使用的詳細說明,以及一份簡要介紹 Pycairo 的 入門指南 。
使用 Pycairo 繪制線段、基本圖形、 徑向漸變(radial gradients):
以上就是 Python 中的一些有用的圖像處理庫,無論你有沒有聽說過、有沒有使用過,都值得試用一下並了解它們。
via: https://opensource.com/article/19/3/python-image-manipulation-tools
作者: Parul Pandey 選題: lujun9972 譯者: HankChow 校對: wxy
G. ❤️【Python從入門到精通】(二十七)更進一步的了解Pillow吧!
本文是接上一篇 ❤️【Python從入門到精通】(二十六)用Python的PIL庫(Pillow)處理圖像真的得心應手❤️ 進一步介紹Pillow庫的使用, 本文將重點介紹一些高級特性:比如如何利用Pillow畫圖形(圓形,正方形),介紹通過Pillow庫給圖片添加水印;同時對上一篇文章未介紹的常用知識點進行補充說明。希望對讀者朋友們有所幫助。
上一篇文章已經介紹了Image模塊,但是介紹的還不夠全面,例如如何從網頁中讀取圖片沒有介紹到,如何裁剪圖片都沒有介紹到。
讀取網頁中的圖片的基本實現方式是:首先利用requests庫讀取當前圖片鏈接的內容,接著將內容轉成二進制數據,在通過open方法將該二進制數據,最後通過save方法進行保存。
讀取結果是:
通過crop方法可以從圖片中裁剪出一個指定大小的區域。裁取的區域范圍是 (left, upper, right, lower) 比如從某個寬高都是400的圖片中裁剪一個是寬高都是100的正方形區域,只需要指定裁剪區域的坐標是: (0, 0, 100, 100)
有裁剪還有一個方法就是重新設置圖片大小的方法 resize,比如將前面400 400的圖片 修改成 300 200,只需要調用resize方法
通過 convert方法進行圖片模式的轉換
前面介紹的ImageDraw庫,只是介紹了利用它來向圖片寫入文本,其實ImageDraw模塊還有一個更有用的途徑,就是可以通過它來畫各種圖形。
首先創建一個600*600的畫布。然後再畫布中畫出一個正方形,畫直線的方法是 line方法。
ImageDraw.line(xy, fill=None, width=0, joint=None)
在xy的坐標之間畫一條直線
xy--> 在兩個坐標點之間畫一條直線,坐標點的傳入方式是[(x, y), (x, y), ...]或者[x, y, x, y, ...]
fill--> 直線的顏色
width--> 直線的寬度
畫一個邊框寬度為2px,顏色為藍色的,面積為400*400的正方形。
ImageDraw.arc(xy, start, end, fill=None, width=0)
在給定的區域范圍內,從開始角到結束角之間繪制一條圓弧
xy--> 定義邊界框的兩個點,傳入的格式是[ (x0, y0), (x1, y1)] 或者 [x0, y0, x1, y1] ,其中 x1>=x0,y1>=y0
start --> 起始角度,以度為單位,從3點鍾開始順時針增加
end--> 結束角度,以度為單位
fill--> 弧線的顏色
width-->弧線的寬度
這里就是畫了一個半圓,如果結束角度是360度的話則就會畫一個完整的圓。
畫圓通過ImageDraw.ellipse(xy, fill=None, outline=None, width=1) 方法,該方法可以畫出一個給定范圍的圓
xy--> 定義邊界框的兩個點,傳入的格式是[ (x0, y0), (x1, y1)] 或者 [x0, y0, x1, y1] ,其中 x1>=x0,y1>=y0
outline--> 輪廓的顏色
fill ---> 填充顏色
width--> 輪廓的寬度
ImageDraw.chord(xy, start, end, fill=None, outline=None, width=1) 方法用來畫半圓,跟arc()方法不同的是它會用直線將起始點和結束點連接起來
xy--> 定義邊界框的兩個點,傳入的格式是[ (x0, y0), (x1, y1)] 或者 [x0, y0, x1, y1] ,其中 x1>=x0,y1>=y0
outline--> 輪廓的顏色
fill ---> 填充顏色
width--> 輪廓的寬度
ImageDraw.pieslice(xy, start, end, fill=None, outline=None, width=1)
類似於arc()方法,不過他會在端點和圓點之間畫直線
xy--> 定義邊界框的兩個點,傳入的格式是[ (x0, y0), (x1, y1)] 或者 [x0, y0, x1, y1] ,其中 x1>=x0,y1>=y0
start --> 起始角度,以度為單位,從3點鍾開始順時針增加
end--> 結束角度,以度為單位
fill--> 弧線的顏色
width-->弧線的寬度
ImageDraw.rectangle(xy, fill=None, outline=None, width=1)
xy--> 在兩個坐標點之間畫一條直線,坐標點的傳入方式是[(x, y), (x, y), ...]或者[x, y, x, y, ...]
outline--> 輪廓的顏色
fill--> 填充的顏色
width--> 輪廓線的寬度
ImageDraw.rounded_rectangle(xy, radius=0, fill=None, outline=None, width=1) 該方法可以畫一個圓角矩形
xy--> 在兩個坐標點之間畫一條直線,坐標點的傳入方式是[(x, y), (x, y), ...]或者[x, y, x, y, ...]
radius--> 角的半徑
outline--> 輪廓的顏色
fill--> 填充的顏色
width--> 輪廓線的寬度
這里有個問題,就是畫好的圖形如何從Image中扣出來呢?
ImageEnhance模塊主要是用於設置圖片的顏色對比度亮度銳度等啥的,增強圖像。
原始圖像
ImageFilter模塊主要用於對圖像進行過濾,增強邊緣,模糊處理,該模塊的使用方式是 im.filter(ImageFilter) 。
其中ImageFilter按照需求傳入指定的過濾值。
下面一個個試下效果
4.邊緣增強
ImageGrab模塊主要用於對屏幕進行截圖,通過grab方法進行截取,如果不傳入任何參數則表示全屏幕截圖,否則是截取指定區域的圖像。其中box格式是:(x1,x2,y1,y2)
利用Pillow庫可以輕易的對圖像增加水印
首先,用PIL的Image函數讀取圖片
接著,新建一張圖(尺寸和原圖一樣)
然後,在新建的圖象上用PIL的ImageDraw把字給畫上去,字的顏色從原圖處獲取。
原圖
添加文字後的效果圖
本文詳細介紹了Pillow庫的使用,希望對讀者朋友們有所幫助。
Pillow官方文檔
需要獲取源碼的小夥伴可以關注下方的公眾號,回復【python】
H. 如何使用python在一張圖片上畫橫線和豎線,線條之間相隔10個像素請提供詳細代碼謝謝!!
#-*-coding:utf-8-*-
__author__='lpe234'
__date__='2015-1-14'
fromPILimportImage
importImageDraw
#打開圖像
img=Image.open('i.jpg')
img_d=ImageDraw.Draw(img)
#獲取圖片的x軸,y軸像素
x_len,y_len=img.size
forxinrange(0,x_len,10):
img_d.line(((x,0),(x,y_len)),(0,0,0))
foryinrange(0,y_len,10):
img_d.line(((0,y),(x_len,y)),(0,0,0))
#保存圖片
img.save('ii.jpg')