背景
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
な気がします。