日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Programming Computer Vision with Python (学习笔记一)

發布時間:2025/3/21 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Programming Computer Vision with Python (学习笔记一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自:http://segmentfault.com/a/1190000003941588

介紹

《Programming Computer Vision with Python》是一本介紹計算機視覺底層基本理論和算法的入門書,通過這本收可以學到有關對象識別、基于內容的圖像搜索、光學字符識別、光流法、跟蹤、三維重建、立體成像、增強現實、姿態估計、全景創建、圖像分割、降噪、圖像分組等技術的實現原理。

英文版PDF下載: https://it-ebooks.info/book/836/

中文版介紹:http://book.douban.com/subject/25906843/

Python圖像處理

先介紹基本的圖像處理,包括圖像的讀取、轉換、縮放、導數計算、畫圖和保存,這些知識將為后面內容的學習打下基礎。
作者選擇Python編寫例子,并使用一個叫PIL(Python Imaging Library)的第三方圖像處理庫。這里特別指出的是:PIL庫開發不活躍,并且很久沒更新了,所以有人基于它fork了另一個分支叫Pillow,Pillow保持與PIL相似的使用接口,解決了許多Bug,并同時兼容Python2和Python3,目前開發狀態活躍。接下來的學習筆記本人都將使用Pillow來代替PIL。

安裝Pillow

以Ubuntu系統為例:

#安裝python開發工具及包管理工具 sudo apt-get install python-dev python-pip #安裝一些需要支持的圖像格式開發包 sudo apt-get install libjpeg-dev libpng-dev libtiff-dev #安裝Pillow圖像處理庫 sudo pip install pillow

Pillow一瞥

Pillow主要包含了對各種圖像模式、圖像格式、顏色、過濾器的數據結構(對象)表示,實現了對圖像模式轉換、格式轉換、過濾器應用、常規圖像處理操作、圖像數據算術運算、2D畫圖等功能,以模塊、類對外提供。
首先,先了解一下Pillow庫使用的一些基本概念:

Bands(圖像通道)
圖像的通道即圖像像素的組成部分,跟Channel應該是同一個概念。比如RGB圖像有3個通道分別為紅、綠、藍。二值圖像和灰度圖像只有1個通道。PNG圖像有4個通道分別為R、G、B和alpha。庫中提供的很多圖像操作都是分別作用于某個通道的數據。

Modes(圖像模式)
圖像模式定義了像素的類型和位深,Pillow支持以下模式:

  • 1 (1-bit pixels, black and white, stored with one pixel per byte)

  • L (8-bit pixels, black and white)

  • P (8-bit pixels, mapped to any other mode using a color palette)

  • RGB (3x8-bit pixels, true color)

  • RGBA (4x8-bit pixels, true color with transparency mask)

  • CMYK (4x8-bit pixels, color separation)

  • YCbCr (3x8-bit pixels, color video format)

  • LAB (3x8-bit pixels, the Lab color space)

  • HSV (3x8-bit pixels, Hue, Saturation, Value color space)

  • I (32-bit signed integer pixels)

  • F (32-bit floating point pixels)

模塊概覽
Pillow的功能劃分為許多模塊,我們簡單過一下這些模塊的功能,以便在看到作者的示例代碼時,可以快速知道這些代碼功能在Pillow哪些模塊中提供。因為作者使用的PIL庫已經過時,我們得用新的Pillow庫來重寫和改進代碼。

  • Image模塊
    提供了一個叫Image的類來表示圖像,以下提到的PIL圖像指的就是此類的對象。Image對象可以使用Image.new、Image.fromarray、Image.frombytes、Image.frombuffer等方法來構造,也可以open一張圖片來構造。Image類提供了一些對圖像進行簡單處理的方法(如:convert、copy、crop、filter、resize、rotate、save、show、transform等)和圖像的基本屬性/信息。以下代碼示例打開一張圖片,旋轉45度后顯示出來:

    from PIL import Image im = Image.open("bride.jpg") im.rotate(45).show()
  • ImageChops模塊
    提供了一些對圖像顏色通道的算術運算,Chops為Channel Operations的縮寫,這些運算通常是對兩幅圖像進行的,并返回一幅處理后的圖像,大部分操作目前只支持8-bit通道。

  • ImageColor模塊
    包含一個顏色表和一個從CSS3表示的顏色到RGB顏色的轉換器,主要用于方便構造Image對象,即PIL.Image.new(mode, size, color=0)的color參數支持以下形式:

    • 16進制的顏色表示,如#rgb, #rrggbb

    • rgb函數,如rgb(255,0,0), rgb(100%, 0%, 100%)

    • HSL(色相、飽和、亮度)函數,如hsl(0,100%,100%),色相取值為0到360,飽和度和亮度取值為0%到100%

    • 常規的HTML顏色名字,如red, Red

  • ImageCms模塊
    提供對LittleCMS2色彩管理引擎的支持。Little CMS是最流行的開源色彩管理庫之一。

  • ImageDraw模塊
    提供簡單的2D畫圖功能,比如畫點、畫線、畫矩形、多邊形、文本、弧形、橢圓等,支持字體設置。

  • ImageEnhance模塊
    提供一些類用于圖像增強操作,比如邊緣銳化、色彩平衡、對比度和亮度調節等。

  • ImageFile模塊
    提供圖像文件的打開和保存,另外,還提供了一個Parser類,用于支持對圖片邊讀邊解碼(比如圖片邊從網絡上下載邊解碼的情景)。

  • ImageFilter模塊
    預定義了一些過濾器,可以在Image.filter(filter)中作為參數使用:

    • BLUR(模糊效果)

    • CONTOUR(輪廓)

    • DETAIL(細節)

    • EDGE_ENHANCE(邊緣加強)

    • EDGE_ENHANCE_MORE(邊緣加強)

    • EMBOSS(浮雕效果)

    • FIND_EDGES(查找邊緣)

    • SMOOTH(使光滑)

    • SMOOTH_MORE(使光滑)

    • SHARPEN(銳化)

  • ImageFont模塊
    定義了類ImageFont表示位圖字體(點陣字體),字體對象可以作為參數傳給ImageDraw.Draw.text(xy, text, fill=None, font=None, anchor=None)以指定的字體畫文本。
    PIL使用自有格式存儲位圖字體,從1.1.4開始,支持TrueType和OpenType字體。

  • ImageGrab模塊
    從屏幕截圖或從剪貼板獲取圖像,得到Image對象。目前只支持OSX(在3.0增加)和Windows。

  • ImageMath模塊
    只提供了一個函數ImageMath.eval用于對圖像表達式(image expressions)進行求值,這些表達式可以是對圖像數據每個bit的位運算(&、|、^、~),也可以是內置的一些運算,比如對圖像的每個像素求絕對值、轉換圖像模式、轉float或int等。

  • ImageMorph模塊
    提供圖像形態操作。

  • ImageOp模塊
    提供一些可直接使用的圖像處理操作,如自動調節對比度、自動裁邊等。

  • ImagePalette模塊
    提供調色板類,其中的方法都被標記為experimental,文檔不詳。

  • ImagePath模塊
    用于存儲和操作2維向量數據。Path對象可傳入ImageDraw模塊的相關方法。

  • ImageQt模塊
    支持從PIL圖像對象創建PyQt4或PyQt5的QImage對象,方便被Qt使用和顯示。

  • ImageSequence模塊
    支持枚舉出一個image sequence(圖像系統,如fli動畫文件)的所有幀。

  • ImageStat模塊
    對圖像或指定區域的每個通道進行統計,包括count、sum、min/max等。

  • ImageTk模塊
    支持從PIL圖像對象創建Tkinter(Python的GUI庫)的BitmapImage和PhotoImage對象。

  • ImageWin模塊
    支持在Windows平臺上創建和顯示圖像,可與PythonWin和其它UI庫一起使用,為這些工具庫提供Windows設備上下文或windows句柄的訪問。

最后給出一個簡單的示例,把書的彩色封面圖像轉為灰度圖像并顯示出來:

from PIL import Image pil_im = Image.open('cover.png').convert('L') pil_im.show()

效果如下:

小結

下一個筆記將介紹另外幾個圖像處理相關的庫。



《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Programming Computer Vision with Python (学习笔记一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。