- OpenCV Image Filtering は様々なフィルタリングが提供されています。関数の中には、デフォルト値が設定されているものがあります。
以下は、デフォルトオプションが指定されている関数の例です。
cv::blur (InputArray src, OutputArray dst, Size ksize, Point anchor=Point(-1,-1), int borderType=BORDER_DEFAULT)
cv::filter2D (InputArray src, OutputArray dst, int ddepth, InputArray kernel, Point anchor=Point(-1,-1), double delta=0, int borderType=BORDER_DEFAULT)
cv::Laplacian (InputArray src, OutputArray dst, int ddepth, int ksize=1, double scale=1, double delta=0, int borderType=BORDER_DEFAULT)
cv::Sobel (InputArray src, OutputArray dst, int ddepth, int dx, int dy, int ksize=3, double scale=1, double delta=0, int borderType=BORDER_DEFAULT)
cv::dilate (InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar &borderValue=morphologyDefaultBorderValue())
cv::getDerivKernels (OutputArray kx, OutputArray ky, int dx, int dy, int ksize, bool normalize=false, int ktype=CV_32F)
- intなど、ポインタを使わないオプションがあります。
- 同じ名前でもデフォルト値がことなるパラメータがあります
boderType
、ksize
(場合によって同じ変数名で違う型名の場合もあるようです。) define
で定義されたオプションが一部使われています。ktype
これらのオプションをまとめて CVImageFilteringOption
というクラスを作成しました。このクラスはOpenCV Image Filtering にある関数のデフォルト値を使っているものをピックアップし、それをまとめて一つのクラスにしました。
ktype = 1
,ktype = 3
と同じ名前のオプションでも異なるデフォルト値が使われているものをどうするか?- 多いもの優先
- オプションの名前を変える
ktype=CV_32F
のような#define CV_32F
としているようなオプションはどのようにすべきか?現在はenum
定義- enum を指定しておけば数字の代わりに、
options.ktype = BORDER_DEFAULT
のような指定方法ができるか?何か別途定義が必要か? - 現在の実装は以下のように、
options
未指定ならOpenCVのデフォルト値を利用。options
が指定されたらデフォルトで作成されるパラメータが気に入らない場合は、options.ktype = xx
のように指定するとなるがこれで良いか?
GCVImage *gcv_image_bilateral_filter(GCVImage *image,
int d,
double sigma_color,
double sigma_space,
GCVImageFilteringOptions *options,
GError **error)
GCVImageFilterOptions
がいいと思います!GCVImageFilterOptions
は多いものにしておいて、違うものはGCVImageBlurFilterOptions
とか個別のオプションクラスを作るのはどうですか?この個別のオプションクラスをGCVImageFilterOptions
のサブクラスにすれば違うオプションだけ変更することができます。enum
にしてください!Cレベルの話ですか?Rubyレベルの話ですか?
Cレベルの話なら
enum
にすれば名前で指定できるようになります。Rubyレベルの話なら https://github.com/red-data-tools/opencv-glib/blob/master/opencv-glib/camera-error.h#L7-L19 みたいに定義しておけば
options.ktype = :border_default
みたいに書けるようになります。いいです!