60 bool detected =
false;
69 DmtxTime *dmtx_timeout =
nullptr;
71 dmtx_timeout =
new DmtxTime;
72 *dmtx_timeout = dmtxTimeNow();
76 img = dmtxImageCreate(I.bitmap,
static_cast<int>(I.getWidth()),
static_cast<int>(I.getHeight()), DmtxPack8bppK);
77 assert(img !=
nullptr);
79 dec = dmtxDecodeCreate(img, 1);
80 assert(dec !=
nullptr);
84 reg = dmtxRegionFindNext(dec, dmtx_timeout);
87 msg = dmtxDecodeMatrixRegion(dec, reg, DmtxUndefined);
90 std::vector<vpImagePoint> polygon;
92 DmtxVector2 p00, p10, p11, p01;
94 p00.X = p00.Y = p10.Y = p01.X = 0.0;
95 p10.X = p01.Y = p11.X = p11.Y = 1.0;
96 dmtxMatrix3VMultiplyBy(&p00, reg->fit2raw);
97 dmtxMatrix3VMultiplyBy(&p10, reg->fit2raw);
98 dmtxMatrix3VMultiplyBy(&p11, reg->fit2raw);
99 dmtxMatrix3VMultiplyBy(&p01, reg->fit2raw);
101 polygon.push_back(
vpImagePoint(I.getHeight() - p00.Y, p00.X));
102 polygon.push_back(
vpImagePoint(I.getHeight() - p10.Y, p10.X));
103 polygon.push_back(
vpImagePoint(I.getHeight() - p11.Y, p11.X));
104 polygon.push_back(
vpImagePoint(I.getHeight() - p01.Y, p01.X));
108 m_message.push_back((
const char *)msg->output);
115 dmtxMessageDestroy(&msg);
120 dmtxRegionDestroy(®);
124 dmtxDecodeDestroy(&dec);
125 dmtxImageDestroy(&img);