ひとまず、以下を確認した。
・追加される「Execute Python」上でOpenCV(cv2)をコールするPythonスクリプトが実行可能を確認。
・「Execute Python」の入出力はpandasのデータフレームなので、スクリプト内でnumpyのndarrayに変換が必須?(下記のサンプルスクリプトを参照)。
・ブロック間で複数個のデータ授受が可能(一つのブロックで複数個の入出力を持てる)。
・データフレームは2次元データ。⇒ブロック間でのデータ授受には1ch画像のみ可能のようである(工夫すれば多chも可能か?)。
⇒各手法のブロックを準備しておけばアルゴリズム試行が手軽にできるようになるかもしれない。
「cv2.imread」
import pandas as pd
import cv2
def rm_main():
#画像読込
img = cv2.imread("C:\\tmp\\lena.jpg",0)
#画像をポップアップ表示してみる
cv2.imshow("Show Image",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#numpyデータをpandasのデータフレームに変換
data = pd.DataFrame(img)
return data
「cv2.bilateralFilter」
import pandas as pd
import numpy as np
import cv2
def rm_main(data):
#pandasのデータフレームをnumpyデータに変換
in_img = np.array(data, dtype="uint8")
#バイラテラルフィルタ処理
out_img = cv2.bilateralFilter(in_img, 30, 40, 10)
#numpyデータをpandasのデータフレームに変換
data = pd.DataFrame(out_img)
return data
「cv2.AKAZE」
import pandas as pd
import numpy as np
import cv2
def rm_main(data):
#pandasのデータフレームをnumpyデータに変換
in_img = np.array(data, dtype="uint8")
#AKAZE
akaze = cv2.AKAZE_create()
kp = akaze.detect(in_img,None)
kp, des = akaze.compute(in_img, kp)
#抽出した特徴点を表示
out_img = cv2.drawKeypoints(in_img, kp, None,(255,255,255),4)
gray_img = cv2.cvtColor(out_img, cv2.COLOR_BGR2GRAY)
#numpyデータをpandasのデータフレームに変換
data = pd.DataFrame(gray_img)
return data
「cv2.imgshow」
import pandas as pd
import numpy as np
import cv2
def rm_main(data):
#pandasのデータフレームをnumpyデータに変換
in_img = np.array(data, dtype="uint8")
#画像をポップアップ表示してみる
cv2.imshow("Show Image",in_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
return data