9 bool Detector::detect(cv::Mat& image,
int timeout,
unsigned int offsetx,
unsigned int offsety){
10 bool detected =
false;
20 img = dmtxImageCreate(image.data, image.cols, image.rows, DmtxPack24bppRGB);
23 dec = dmtxDecodeCreate(img, 1);
26 t = dmtxTimeAdd(dmtxTimeNow(), timeout);
27 reg = dmtxRegionFindNext(dec, &t);
35 DmtxVector2 p00, p10, p11, p01;
37 height = dmtxDecodeGetProp(dec, DmtxPropHeight);
39 p00.X = p00.Y = p10.Y = p01.X = 0.0;
40 p10.X = p01.Y = p11.X = p11.Y = 1.0;
41 dmtxMatrix3VMultiplyBy(&p00, reg->fit2raw);
42 dmtxMatrix3VMultiplyBy(&p10, reg->fit2raw);
43 dmtxMatrix3VMultiplyBy(&p11, reg->fit2raw);
44 dmtxMatrix3VMultiplyBy(&p01, reg->fit2raw);
45 polygon_.push_back(cv::Point(p00.X + offsetx,image.rows-p00.Y + offsety));
46 polygon_.push_back(cv::Point(p10.X + offsetx,image.rows-p10.Y + offsety));
47 polygon_.push_back(cv::Point(p11.X + offsetx,image.rows-p11.Y + offsety));
48 polygon_.push_back(cv::Point(p01.X + offsetx,image.rows-p01.Y + offsety));
51 std::pair<cv::Point,cv::Point>(
52 cv::Point(p00.X + offsetx,image.rows-p00.Y + offsety),
53 cv::Point(p10.X + offsetx,image.rows-p10.Y + offsety)
57 std::pair<cv::Point,cv::Point>(
58 cv::Point(p10.X + offsetx,image.rows-p10.Y + offsety),
59 cv::Point(p11.X + offsetx,image.rows-p11.Y + offsety)
63 std::pair<cv::Point,cv::Point>(
64 cv::Point(p11.X + offsetx,image.rows-p11.Y + offsety),
65 cv::Point(p01.X + offsetx,image.rows-p01.Y + offsety)
69 std::pair<cv::Point,cv::Point>(
70 cv::Point(p01.X + offsetx,image.rows-p01.Y + offsety),
71 cv::Point(p00.X + offsetx,image.rows-p00.Y + offsety)
75 msg = dmtxDecodeMatrixRegion(dec, reg, DmtxUndefined);
78 dmtxMessageDestroy(&msg);
80 dmtxRegionDestroy(®);
83 dmtxDecodeDestroy(&dec);
84 dmtxImageDestroy(&img);
bool detect(cv::Mat &image, int timeout=1000, unsigned int offsetx=0, unsigned int offsety=0)
TFSIMD_FORCE_INLINE Vector3 rotate(const Vector3 &wAxis, const tfScalar angle) const
std::vector< cv::Point > polygon_
std::vector< std::pair< cv::Point, cv::Point > > lines_