LoginSignup
1

More than 3 years have passed since last update.

opencv-pythonパッケージにあるクラス・メソッドの一覧を表示する方法

Posted at

背景

OpenCVで油絵エフェクトは1行でかけるとのことです。(C++限定)xphoto::oilPainting メソッドはC++にあってPythonにはないと言っていましたが本当にないです。 どのように調べたかを下記の通り示します。

方法

pythonのパッケージの中身ですが help("[package name]") で確認できます。

>> help("random")
Help on module random:

NAME
    random - Random variable generators.

DESCRIPTION
        integers
        --------
               uniform within range

        sequences
        ---------
               pick random element
               pick random sample
               pick weighted random sample
               generate random permutation

        distributions on the real line:
        ------------------------------
               uniform
               triangular
               normal (Gaussian)
               lognormal
.....
.....
.....

コマンドラインからだとviが開いてEnterキーで下にスクロールするのですが、メソッドを確認するのに少し面倒です。それでhelp表示をテキストにoutputしてみることにします。

>> python3 -m pydoc cv2 >> cv2_package.txt

中身はこんな感じです。(先頭部分のみ)

クラス一覧

Help on package cv2.cv2:

NAME
    cv2.cv2 - Python wrapper for OpenCV.

PACKAGE CONTENTS
    cv2
    data (package)

CLASSES
    builtins.Exception(builtins.BaseException)
        cv2.error
    builtins.object
        cv2.Algorithm
            cv2.AlignExposures
                cv2.AlignMTB
            cv2.BackgroundSubtractor
                cv2.BackgroundSubtractorKNN
                cv2.BackgroundSubtractorMOG2
                cv2.bgsegm_BackgroundSubtractorCNT
                cv2.bgsegm_BackgroundSubtractorGMG
                cv2.bgsegm_BackgroundSubtractorGSOC
                cv2.bgsegm_BackgroundSubtractorLSBP
                cv2.bgsegm_BackgroundSubtractorMOG
.....
.....
.....

メソッド一覧

    class AKAZE(Feature2D)
     |  Method resolution order:
     |      AKAZE
     |      Feature2D
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __new__(*args, **kwargs) from builtins.type
     |      Create and return a new object.  See help(type) for accurate signature.
     |  
     |  __repr__(self, /)
     |      Return repr(self).
     |  
     |  getDefaultName(...)
     |      getDefaultName() -> retval
     |      .
     |  
     |  getDescriptorChannels(...)
     |      getDescriptorChannels() -> retval
     |      .
     |  
     |  getDescriptorSize(...)
     |      getDescriptorSize() -> retval
     |      .
     |  
     |  getDescriptorType(...)
     |      getDescriptorType() -> retval
     |      .
     |  
     |  getDiffusivity(...)
     |      getDiffusivity() -> retval
     |      .
     |  
     |  getNOctaveLayers(...)
     |      getNOctaveLayers() -> retval
     |      .
     |  
     |  getNOctaves(...)
     |      getNOctaves() -> retval
     |      .
.....
.....
.....

比較

xphoto クラス内に oilPainting メソッドがないか探してみると WhiteBalance (照度制御:夜に撮影した写真に写っている物体をキレイに表示するエフェクト)メソッドはあるのですが、oilPainting がないことがわかります。

    cv2.xphoto_WhiteBalancer
        cv2.xphoto_GrayworldWB
        cv2.xphoto_LearningBasedWB
        cv2.xphoto_SimpleWB

おわりに

OpenCV 公式ドキュメント を見てもどのクラス・メソッドがPythonに対応しているか少しわかりづらいです。
雰囲気的に言語別で対応できている順番として C++(メイン) > Python >> Java な気がします。

参考になりそうなリンク

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1