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

# 背景
[OpenCVで油絵エフェクトは1行でかけるとのことです。(C++限定)](https://qiita.com/satsukiya/items/8adc069772df7465bd85) で `xphoto::oilPainting` メソッドはC++にあってPythonにはないと言っていましたが本当にないです。 どのように調べたかを下記の通り示します。

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

```shell
>> 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してみることにします。

```shell
>> 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 公式ドキュメント](https://docs.opencv.org/4.1.2/index.html) を見てもどのクラス・メソッドがPythonに対応しているか少しわかりづらいです。
雰囲気的に言語別で対応できている順番として `C++(メイン) > Python >> Java` な気がします。


# 参考になりそうなリンク
- [Python - モジュールのヘルプの参照方法、インストールパスを調べる方法](https://qiita.com/ao_log/items/6297de8d0c4e778cf499)