5

Pybind11を使用してpythonバインディングを生成しようとしている独自のC ++があります。

auto markerParams = MarkerDetector::Params::create(MarkerType::chessboard);
markerDetector.detect(image, markerParams);

MarkerDetector::Params列挙型をパラメーターとして受け取るファクトリーメソッドで構築された内部構造体であるため、構造体のバインディングを生成する際に問題があります。

enum MarkerType { chessboard, tag };

typedef std::vector<cv::Point> ContourType;
typedef std::vector<cv::Point2d> ContourTyped;

//              contour full, contour approximate, area, corners
typedef std::tuple<ContourType, ContourType, double, ContourTyped> MarkerDescriptor;


class MarkerDetector {
    public:
        std::vector<MarkerDescriptor> detect(Mat image, const Params params);

        struct Params {
            int rows, cols;
            ColorRange borderColor;
            ShapeDetector::Params borderShape;
            cv::Size borderSize;
            cv::Size Size;


            static Params create(MarkerType markerType) {
                static Params markerTypes[] = {
                    { 3, 6, ColorRange::GREEN, ShapeDetector::Params::RECTANGLE, cv::Size(30,30), cv::Size(140, 140) }
                };
                return markerTypes[markerType];
            }
        };
    };

このより高度なケースを処理する方法を知っている人はいますか?

4

1 に答える 1