ImagePy教程 —— 擴展功能

ImagePy 是一款基於 Python 的可擴展圖像處理框架,可謂是 Python 版的 ImageJ,但設計更為精簡,可以輕鬆接入 scipy, scikit-image, opencv 等任何基於 numpy 的圖像處理庫。

Github地址:下載地址 主頁:imagepy.org/

擴展開發

  • ImagePy 是什麼

    ImagePyn 不只是一款圖像處理軟體,更是一個超輕量級,高擴展性的插件式圖像處理框架。框架基於 Python 實現,圖像數據基於 Numpy,任何基於 nNumpy 的演算法庫,都可以輕鬆接入,同時 ImagePy n為其提供有好交互環境,包括對話框,圖像預覽,撤銷支持,選區支持,多通道支持和圖像棧支持等…

  • 為什麼選擇 Python

    Python語言近年來持續升溫,在這裡,它有如下優勢

  1. 語法簡潔,易學,開發環境搭建簡單。
  2. 語言靈活性高,編程更方便
  3. 有大量的第三方類庫支持,圖像方面有 scipy, scikit-image, opencv等。
  4. 大多數科學計算庫都是基於 Numpy 的,這讓設計統一框架變得容易。

拿來主義可以說是 ImagePy 的設計精髓,scikit-image, opencv 等鼎鼎大名的開源圖像處理庫,盡為我所用,並且是輕鬆無縫結合。同樣你也可以輕鬆的擴展一個工具,由於更深入的內容與操作手冊的主旨無關,關於擴展開發,我將在開發文檔中展開介紹,這裡僅僅是一個初步認識,下面就以scikit-image的一個Canny運算元為例,施展吸星大法。同時也結束操作手冊的文檔編寫。

接入Canny運算元的例子

# -*- coding: utf-8 -*nfrom skimage import featurenfrom core.engines import Filternclass Plugin(Filter):n title = Cannyn note = [all, auto_msk, auto_snap, preview]nn para = {sigma:1.0, low_threshold:10, high_threshold:20}nn #parametern view = [(float, (0,10), 1, sigma, sigma, pix),n (slide,(0,30), low_threshold, low_threshold,),n (slide,(0,30), high_threshold, high_threshold,)]n #processn def run(self, ips, snap, img, para = None):n return feature.canny(snap, sigma=para[sigma], low_threshold=para[n low_threshold], high_threshold=para[high_threshold], mask=ips.get_msk())*255n

  • 1. 引入核心類庫,引入 Filter

    Filter是濾波器積累,核心類庫是準備接入的核心函數。

  • 2. 繼承 Filter

    所有濾波器的基類,集成之後自動獲得了很多交互功能。

  • 3. 設定 Title

    這將是菜單欄上展示的內容

  • 4. 設定 Note

    這告訴ImagePy需要幫你做哪些前期和後期工作,比如對選區的支持,對圖像棧的支持等。

  • 5. 設定 Para

    核心函數需要用到的參數

  • 6. 設定 view

    插件執行時的交互方式(與參數對應,只需要指明參數類型,取值範圍等信息即可)

  • 7. 核心函數,run

    這一步僅僅是調用核心函數,snap是緩存圖像,img是前景圖,para是通過對話框交互得到的參數。你要做的僅僅是把snap的值經過作用,賦予img。

    OK,一個插件就寫好了,我們試一下效果:

可以看到,短短12行代碼,就接入了一個非常酷的邊緣提取功能,是不是很令人興奮!

如希望閱讀更多關於ImagePy的內容,請 回到 ImagePy 文檔目錄


推薦閱讀:

PS教程—使用PS圖層添加光束這麼簡單
顏色保衛戰與VOT2016
[171111] Python OpenCV 中 SIFT 特徵點檢測和匹配
ps教程—摳圖秘籍之自由鋼筆工具摳圖
計算機視覺目標跟蹤過程當中對遮擋問題處理比較好的演算法有哪些?

TAG:numpy | 图像处理 | Python |