2016-06-17 82 views
1

findHomography()をRANSACを使って実行しようとしていますが、TypeErrorを受け取りました。私のコードはメソッドをまったく指定しないと機能しますが、method=0でもTypeErrorが発生します。OpenCV Python - RANSACを使用したfindHomography

コード

T, mask = cv2.findHomography(points_subset[i], points_subset[i+1], False, method=cv2.RANSAC) 

エラー

Traceback (most recent call last): 
    File "stab.py", line 368, in <module> 
    stabilize_video(path, video_name) 
    File "stab.py", line 331, in stabilize_video 
    transforms, points, frame = calc_transformations(cap) 
    File "stab.py", line 113, in calc_transformations 
    T, mask = cv2.findHomography(points_subset[i], points_subset[i+1], False, method=cv2.RANSAC) 
TypeError: Argument given by name ('method') and position (3) 

答えて

3

あなたが二回methodパラメータを指定しようとしているので、あなたのエラーが発生しています。かつては位置引数として、もう一度キーワード引数として。エラーを修正するには、False引数を削除することができます。ホモグラフィを見つけるためにRANSACを使用しようとしている場合は、正しい通話は次のようになります。

T, mask = cv2.findHomography(points_subset[i], points_subset[i+1], method=cv2.RANSAC) 
+0

ありがとうございます。また、RANSACをestimateRigidTransform()でどのように使用するかも知っていますか?それはOpenCVで実装されているように見えないので、私はそれを自分で行う必要があるでしょうか? http://docs.opencv.org/3.0-beta/modules/video/doc/motion_analysis_and_object_tracking.html#estimaterigidtransform – Apollo

+0

@Apollo 'estimatedRigidTransform'はRANSACを内部的に使用しているようです。 [ここ](https://github.com/Itseez/opencv/blob/2f4e38c8313ff313de7c41141d56d945d91f47cf/modules/video/src/lkpyramid.cpp)を参照してください。また、この答えが正しければ、それを受け入れるでしょうか? – Aurelius

+0

それは非常に有用な発見だった:) – Apollo

関連する問題