ImagePy開發文檔 —— 宏引擎
ImagePy 是一款基於 Python 的可擴展圖像處理框架,可謂是 Python 版的 ImageJ,但設計更為精簡,可以輕鬆接入 scipy, scikit-image, opencv 等任何基於 numpy 的圖像處理庫。
Github地址:下載地址 主頁:http://www.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的比較實現