ImagePy開發文檔 —— 宏引擎

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

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

Macros

Macros 是一個宏執行器引擎,它負責將一串 ImagePy 命令依次執行。

事實上我們幾乎不會去繼承 Macros,它僅僅是 ImagePy 為了實現宏功能,並統一為一種引擎介面而設計的輔助類。

類結構n

class Macros:n title = Macrosn cmds = [....]nn def run(self):n # run every line in cmdsnn def start(self, para=None):n # just runn

  • title:

    插件的標題,將作為菜單欄的顯示,交互對話框的標題,以及插件管理器中的主鍵。

  • run:

    依次執行每一行命令

  • start:

    run

實現機制

宏錄製功能應該是 ImagePy 裡面非常絢的一個功能了,但事實上它的代碼實現不超過20行,這主要是得益於整體的高彈性式設計。我們還是以最簡單的高斯模糊為例,來看看它的實現機制。

  • 錄製演示

    Plugins > Macros > Recoder

  • 錄製機制

    無論是 Filter,Simple,Free 他們都是引擎類,都有共同的介面 start(self, para),當某個插件被執行後,title > para 將被錄製器記錄。Gaussian>{『sigma』:8.0}

  • 執行機制

    所有的插件都被 PluginsManager 所管理,PluginsManager 內部實際上是維護了一個以插件的 title 為主鍵的鍵值對。所以我們這樣做:

    1.解析宏命令,用 『>』 進行字元串分割

    2.用分割的 title 作為主鍵去 PluginsManager 中查找,得到濾波器的實例。

    3.調用 eval 函數,把 para 重新解析成 python 對象(這裡充分發揮了腳本語言的優勢)

    4.執行獲取的濾波器的 start 方法,把 para 當作參數輸入。

    (還記得引起的 start 方法特性,當 para 為 None 時進行交互,否則直接執行 run)

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

推薦閱讀:

1000+收藏了!小白自學Python一本通
關於python遞歸的邏輯困惑?
Python3 中代理使用方法總結
結巴分詞獲取關鍵詞時怎麼過濾掉一些停用詞?
特徵工程總結:R與Python的比較實現

TAG:numpy | 图像处理 | Python |