22#include "pybind11/pybind11.h"
23#include "pybind11/eigen.h"
24#include "pybind11/stl.h"
26#include "ndarray/pybind11.h"
32using namespace pybind11::literals;
40 [](
auto & mod,
auto & cls)
mutable {
43 cls.attr(
"XX") = py::cast(int(AffineTransform::Parameters::XX));
44 cls.attr(
"YX") = py::cast(int(AffineTransform::Parameters::YX));
45 cls.attr(
"XY") = py::cast(int(AffineTransform::Parameters::XY));
46 cls.attr(
"YY") = py::cast(int(AffineTransform::Parameters::YY));
47 cls.attr(
"X") = py::cast(int(AffineTransform::Parameters::X));
48 cls.attr(
"Y") = py::cast(int(AffineTransform::Parameters::Y));
51 cls.def(py::init<>());
52 cls.def(py::init<Eigen::Matrix3d const &>(),
"matrix"_a);
53 cls.def(py::init<Eigen::Matrix2d const &>(),
"linear"_a);
54 cls.def(py::init<Eigen::Vector2d const &>(),
"translation"_a);
55 cls.def(py::init<Eigen::Matrix2d const &, Eigen::Vector2d const &>(),
56 "linear"_a,
"translation"_a);
57 cls.def(py::init<LinearTransform const &>(),
"linear"_a);
58 cls.def(py::init<Extent2D const &>(),
"translation"_a);
59 cls.def(py::init<LinearTransform const &, Extent2D const &>(),
"linear"_a,
"translation"_a);
62 cls.def(
"__mul__", &AffineTransform::operator*, py::is_operator());
64 py::overload_cast<Point2D const &>(&AffineTransform::operator(), py::const_));
66 py::overload_cast<Extent2D const &>(&AffineTransform::operator(), py::const_));
83 [](py::object self, py::object x, py::object y) {
84 return py::make_tuple(self.attr(
"applyX")(x, y),
85 self.attr(
"applyY")(x, y));
90 PyErr_Format(PyExc_IndexError,
"Invalid index for AffineTransform: %d", i);
91 throw py::error_already_set();
96 if (row < 0 || row > 2 || col < 0 || col > 2) {
97 PyErr_Format(PyExc_IndexError,
"Invalid index for AffineTransform: %d, %d",
row,
col);
98 throw py::error_already_set();
100 return (
self.getMatrix())(
row,
col);
103 if (i < 0 || i > 5) {
104 PyErr_Format(PyExc_IndexError,
"Invalid index for AffineTransform: %d", i);
105 throw py::error_already_set();
110 return py::str(py::cast(
self.getMatrix())); }
113 return py::str(
"AffineTransform(\n{}\n)").format(py::cast(
self.getMatrix()));
116 return py::make_tuple(cls, py::make_tuple(py::cast(
self.getMatrix())));
void wrapAffineTransform(utils::python::WrapperCollection &wrappers)
AffineTransform makeAffineTransformFromTriple(Point2D const &p1, Point2D const &p2, Point2D const &p3, Point2D const &q1, Point2D const &q2, Point2D const &q3)
A base class for image defects.