私はPythonのエキスパートが、内部関数、クロージャ、ファクトリ関数で現在経験している混乱について助けてくれることを願っています。一般的なハフ変換の実装例を探している変換時に私はこれが見つかりました:Python - 内部関数、クロージャ、およびファクトリ関数 - どのように因数分解するのですか?
https://github.com/vmonaco/general-hough/blob/master/src/GeneralHough.py
(私はC++にこれを翻訳したいのですが、最初のステップは、general_hough_closureで内部機能を考慮することであると思われます) :
def general_hough_closure(reference_image):
'''
Generator function to create a closure with the reference image and origin
at the center of the reference image
Returns a function f, which takes a query image and returns the accumulator
'''
referencePoint = (reference_image.shape[0]/2, reference_image.shape[1]/2)
r_table = build_r_table(reference_image, referencePoint)
def f(query_image):
return accumulate_gradients(r_table, query_image)
return f
この機能の仕組みにはまっているようです。 "f"はどこにも呼び出されていないようで、関数がどのように "query_image"を知っているのか分かりません。私は内部の関数、クロージャ、ファクトリ関数のヒントを見つけるためにさまざまなグーグルを試しました。例えばthisと類似のページですが、私が見つけることができるすべての例はより簡略化されており、あまり役に立ちません。誰かが何らかの方向を提示できますか?
このコードでは、__ *リターンがfunction__を*。あなたはそれがあなたが望んでいると確信していますか?私はそれがあなたがC++でやりたいと思うことではないかと疑っています。 –
@Rawing、私は関数が関数を返すことを知っています。それは除外したい部分ですので、C++に翻訳できます – cdahms
'def f(query_image)'行を削除し、 'return f '関数に、' query_image'という名前の2番目のパラメータを与えます。それは翻訳しやすいはずです。 –