亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dmtxregion.c

?? data matrix 生成、解析、攝像頭自動(dòng)識(shí)別源碼
?? C
?? 第 1 頁 / 共 4 頁
字號(hào):
   matrixRegion->chain.bx1 = 100.0;   matrixRegion->chain.by0 = 100.0;   matrixRegion->chain.by1 = 100.0;   matrixRegion->chain.sz = 100.0;   MatrixRegionUpdateXfrms(matrixRegion);}/** * XXX * TODO: this function should really be static --- move "decode" functions into this file * * @param * @return XXX */extern voiddmtxMatrixRegionDeInit(DmtxMatrixRegion *matrixRegion){   if(matrixRegion->array != NULL)      free(matrixRegion->array);   if(matrixRegion->code != NULL)      free(matrixRegion->code);   if(matrixRegion->output != NULL)      free(matrixRegion->output);   memset(matrixRegion, 0x00, sizeof(DmtxMatrixRegion));}/** * XXX * * @param * @return XXX */static voidMatrix3ChainXfrm(DmtxMatrix3 m, DmtxChain *chain){   DmtxMatrix3 mtxy, mphi, mshx, mscxy, msky, mskx;   dmtxMatrix3Translate(mtxy, chain->tx, chain->ty);   dmtxMatrix3Rotate(mphi, chain->phi);   dmtxMatrix3Shear(mshx, chain->shx, 0.0);   dmtxMatrix3Scale(mscxy, chain->scx * chain->sz, chain->scy * chain->sz);   dmtxMatrix3LineSkewTop(msky, chain->by0, chain->by1, chain->sz);   dmtxMatrix3LineSkewSide(mskx, chain->bx0, chain->bx1, chain->sz);   dmtxMatrix3Multiply(m, mtxy, mphi);   dmtxMatrix3MultiplyBy(m, mshx);   dmtxMatrix3MultiplyBy(m, mscxy);   dmtxMatrix3MultiplyBy(m, msky);   dmtxMatrix3MultiplyBy(m, mskx);}/** * XXX * * @param * @return XXX */static voidMatrix3ChainXfrmInv(DmtxMatrix3 m, DmtxChain *chain){   DmtxMatrix3 mskx, msky, mscxy, mshx, mphi, mtxy;   dmtxMatrix3LineSkewSideInv(mskx, chain->bx0, chain->bx1, chain->sz);   dmtxMatrix3LineSkewTopInv(msky, chain->by0, chain->by1, chain->sz);   dmtxMatrix3Scale(mscxy, 1.0/(chain->scx * chain->sz), 1.0/(chain->scy * chain->sz));   dmtxMatrix3Shear(mshx, -chain->shx, 0.0);   dmtxMatrix3Rotate(mphi, -chain->phi);   dmtxMatrix3Translate(mtxy, -chain->tx, -chain->ty);   dmtxMatrix3Multiply(m, mskx, msky);   dmtxMatrix3MultiplyBy(m, mscxy);   dmtxMatrix3MultiplyBy(m, mshx);   dmtxMatrix3MultiplyBy(m, mphi);   dmtxMatrix3MultiplyBy(m, mtxy);}/** * XXX * * @param * @return XXX */static voidMatrixRegionUpdateXfrms(DmtxMatrixRegion *matrixRegion){   Matrix3ChainXfrm(matrixRegion->raw2fit, &(matrixRegion->chain));   Matrix3ChainXfrmInv(matrixRegion->fit2raw, &(matrixRegion->chain));}/** * XXX * * @param * @return XXX */static intMatrixRegionAlignFinderBars(DmtxMatrixRegion *matrixRegion, DmtxDecode *decode,      DmtxEdgeFollower *f0, DmtxEdgeFollower *f1){   int             success;   float           v1Length;   float           v2Length;   DmtxFinderBar   bar;   DmtxEdgeFollower *fTmp;   DmtxRay2        rPrimary, rSecondary;   DmtxVector2     pMin, pTmp;   DmtxVector2     v1, v2;   DmtxMatrix3     m;   DmtxChain       chain;/* XXX comment these cases bettercount   1st    2nd         0      0            return false         1      1            colinear?            yes: decide which is primary (longer secondary)                 verify other finder bar is co-linear            no:  finder bars are known         1      0         11     0            primary is known            verify that secondary is long enough         0      1         0     11            primary is known            verify that secondary is long enough*/   // Ensure that no secondary line is defined unless primary line is also defined   assert((f0->line1.isDefined) ? f0->line0.isDefined : 1);   assert((f1->line1.isDefined) ? f1->line0.isDefined : 1);   // We need at least 2 finder bar candidates to proceed   if(f0->line0.isDefined + f0->line1.isDefined + f1->line0.isDefined + f1->line1.isDefined < 2) {      return DMTX_FALSE;   }   // One direction contains both possible finder bar candidates (rare)   else if(f0->line0.isDefined + f1->line0.isDefined == 1) {      fTmp = (f0->line0.isDefined) ? f0 : f1;      rPrimary = fTmp->line0;   // Set primary to the defined one      rSecondary = fTmp->line1; // Set secondary to the defined one's dog-leg   }   // Each direction contains a finder bar candidate   else {      // Close to -1.0 means colinear (but opposite)      if(dmtxVector2Dot(&(f0->line0.v), &(f1->line0.v)) < -0.99) {         if(f0->line1.isDefined * (f0->line1.tMax - f0->line1.tMin) >               f1->line1.isDefined * (f1->line1.tMax - f1->line1.tMin)) {            // Primary is combination of both line0's (careful about direction / tMax handling)            rPrimary = f1->line0;            dmtxPointAlongRay2(&pMin, &(f0->line0), f0->line0.tMax);            rPrimary.tMin = dmtxDistanceAlongRay2(&rPrimary, &pMin);            rSecondary = f0->line1;         }         else {            // Primary is combination of both line0's (careful about direction / tMax handling)            rPrimary = f0->line0;            dmtxPointAlongRay2(&pMin, &(f1->line0), f1->line0.tMax);            rPrimary.tMin = dmtxDistanceAlongRay2(&rPrimary, &pMin);            rSecondary = f1->line1;         }      }      else {         // Set primary and secondary to line0's arbitrarily         rPrimary = f0->line0;         rSecondary = f1->line0;      }   }   // Check if we have to valid lines   if(rPrimary.isDefined == 0 || rSecondary.isDefined == 0) {      return DMTX_FALSE;   }   else if(rPrimary.tMax - rPrimary.tMin < 15 || rSecondary.tMax - rSecondary.tMin < 15) {      return DMTX_FALSE;   }   // Can't check lengths yet because length should be calculated from the   // true intersection of both lines   // Find intersection of 2 chosen rays   success = dmtxRay2Intersect(&(bar.p0), &rPrimary, &rSecondary);   if(!success) {      return DMTX_FALSE;   }   dmtxPointAlongRay2(&(bar.p2), &rPrimary, rPrimary.tMax);   dmtxPointAlongRay2(&(bar.p1), &rSecondary, rSecondary.tMax);   dmtxVector2Sub(&v1, &bar.p1, &bar.p0);   dmtxVector2Sub(&v2, &bar.p2, &bar.p0);   v1Length = dmtxVector2Mag(&v1);   v2Length = dmtxVector2Mag(&v2);   // Check that both lines are at least 10 pixels in length   if(v1Length < 10 || v2Length < 10) {//    fprintf(stdout, "Reject: At least one finder bar is too short.\n");      return DMTX_FALSE;   }   // Check matrix is not too "flat"   else if(min(v1Length, v2Length) / max(v1Length, v2Length) < 0.2) {//    fprintf(stdout, "Reject: Candidate region is too \"flat\" (%g).\n",//          min(v1Length, v2Length) / max(v1Length, v2Length));      return DMTX_FALSE;   }   // normalize(dir1) and normalize(dir2)   dmtxVector2Norm(&v1);   dmtxVector2Norm(&v2);   // Check that finder bars are not colinear   if(fabs(dmtxVector2Dot(&v1, &v2)) > cos(20.0*M_PI/180.0)) {//    fprintf(stdout, "Reject: Finder bars are too colinear.\n");      return DMTX_FALSE;   }   // XXX This is where we draw the 3 squares on the first pane: Replace with plotPoint callback   if(decode && decode->plotPointCallback) {      (*(decode->plotPointCallback))(bar.p0, 1, 1, DMTX_DISPLAY_SQUARE);      (*(decode->plotPointCallback))(bar.p1, 1, 1, DMTX_DISPLAY_SQUARE);      (*(decode->plotPointCallback))(bar.p2, 1, 1, DMTX_DISPLAY_SQUARE);   }   // Check for clockwise/ccw order of points and flip if necessary   if(dmtxVector2Cross(&v2, &v1) < 0.0) {      pTmp = bar.p1;      bar.p1 = bar.p2;      bar.p2 = pTmp;   }   chain.tx = -bar.p0.X;   chain.ty = -bar.p0.Y;   chain.phi = 0.0;   chain.shx = 0.0;   chain.scx = chain.scy = 1.0;   chain.bx0 = chain.bx1 = chain.by0 = chain.by1 = chain.sz = 1.0;   Matrix3ChainXfrm(m, &chain);   dmtxMatrix3VMultiply(&pTmp, &bar.p2, m);   chain.phi = -atan2(pTmp.Y, pTmp.X);   Matrix3ChainXfrm(m, &chain);   dmtxMatrix3VMultiply(&pTmp, &bar.p2, m);   chain.scx = 1.0/pTmp.X;   dmtxMatrix3VMultiply(&pTmp, &bar.p1, m);   assert(pTmp.Y > DMTX_ALMOST_ZERO);   chain.shx = -pTmp.X / pTmp.Y;   chain.scy = 1.0/pTmp.Y;   chain.bx0 = chain.bx1 = chain.by0 = chain.by1 = chain.sz = 100.0;   // Update transformations now that finders are set   matrixRegion->chain = chain;   MatrixRegionUpdateXfrms(matrixRegion);   // Now matrixRegion contains our best guess.  Next tighten it up.   if(decode && decode->buildMatrixCallback2)      (*(decode->buildMatrixCallback2))(&bar, matrixRegion);   return DMTX_TRUE;}/** * XXX * * @param * @return XXX */static intMatrixRegionAlignTop(DmtxMatrixRegion *matrixRegion, DmtxDecode *decode){   double t, m;   double stepSize;   int gapCount = 0, gapLength = 0, maxGapLength = 0;   DmtxVector2 p0, px0, px1;   DmtxColor3 color;   DmtxMatrix3 s, sInv, sReg, sRegInv, m0, m1;   DmtxVector2 prevHit, prevStep, highHit, highHitX;   dmtxMatrix3LineSkewTop(m0, 100.0, 75.0, 100.0);   dmtxMatrix3Scale(m1, 1.25, 1.0);   dmtxMatrix3Multiply(s, m0, m1);   dmtxMatrix3Multiply(sReg, matrixRegion->raw2fit, s);   dmtxMatrix3LineSkewTopInv(m0, 100.0, 75.0, 100.0);   dmtxMatrix3Scale(m1, 0.8, 1.0);   dmtxMatrix3Multiply(sInv, m1, m0);   dmtxMatrix3Multiply(sRegInv, sInv, matrixRegion->fit2raw);   if(decode && decode->buildMatrixCallback3)      (*(decode->buildMatrixCallback3))(sRegInv);   // Determine step size (90% of rough pixel length)   px0.X = 0.0;   px0.Y = 0.0;   px1.X = 0.0;   px1.Y = 100.0;   dmtxMatrix3VMultiplyBy(&px0, sRegInv);   dmtxMatrix3VMultiplyBy(&px1, sRegInv);   dmtxVector2SubFrom(&px1, &px0);   stepSize = dmtxVector2Mag(&px1);   assert(stepSize > DMTX_ALMOST_ZERO);   stepSize = 0.9 * (100.0/stepSize);   p0.X = 0.0;   p0.Y = 100.0;   prevStep = prevHit = p0;   highHit.X = highHit.Y = 100.0; // XXX add this for safety in case it's not found   while(p0.X < 100.0 && p0.Y < 300.0) { // XXX cap rise at 300.0 to prevent infinite loops      dmtxMatrix3VMultiply(&px0, &p0, sRegInv);      dmtxColor3FromImage(&color, &(decode->image), px0.X, px0.Y);      t = dmtxDistanceAlongRay3(&(matrixRegion->gradient.ray), &color);      if(decode && decode->xfrmPlotPointCallback)         (*(decode->xfrmPlotPointCallback))(px0, sReg, 4, DMTX_DISPLAY_POINT);      // Bad notation whereby:      //    prevStep captures every little step      //    prevHit captures the most recent edge boundary detection      // Need to move upward      if(t > matrixRegion->gradient.tMid) {         // Need to move up, and previous move was right         if(p0.X - prevStep.X > DMTX_ALMOST_ZERO) {            if(gapLength > 2*maxGapLength) {               maxGapLength = gapLength;               gapCount = 1;            }            else if(gapLength > maxGapLength/2) {               gapCount++;            }            gapLength = 0; // no matter what, reset gapLength         }         prevStep = p0;         p0.Y += stepSize;      }      // Need to advance to the right      else {         // Need to move right, and previous step was up         if(fabs(p0.Y - prevStep.Y) > DMTX_ALMOST_ZERO) {            // If it has been a while since previous hit            if(p0.X - prevHit.X >= 3) {               highHit = p0;               highHitX = px0;            }            // Recent had a hit            else {               prevHit = p0;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久九九全国免费| 国产一区二区三区综合| 另类调教123区| 成人av综合在线| 91精品国模一区二区三区| 久久精品视频一区二区三区| 亚洲第一二三四区| 成人sese在线| 欧美成人aa大片| 午夜欧美一区二区三区在线播放| 国产精品一区二区久久不卡| 欧美日韩一区二区在线视频| 国产精品久久久久久久久快鸭| 青青草国产精品亚洲专区无| 91黄视频在线| 亚洲私人黄色宅男| 成人视屏免费看| 久久精品视频免费| 久久国产人妖系列| 欧美人动与zoxxxx乱| 亚洲免费在线看| 9色porny自拍视频一区二区| 国产性天天综合网| 九九**精品视频免费播放| 欧美日韩高清一区| 亚洲资源在线观看| 色综合久久久久网| 国产精品麻豆久久久| 国产乱一区二区| 欧美大胆一级视频| 久久国产精品色| xf在线a精品一区二区视频网站| 午夜亚洲福利老司机| 色婷婷激情综合| 自拍偷拍亚洲激情| 在线视频一区二区三| 亚洲你懂的在线视频| 91在线观看高清| 亚洲精品水蜜桃| 欧美在线观看一二区| 亚洲国产精品综合小说图片区| 色综合天天性综合| 一区二区三区波多野结衣在线观看| 色综合一区二区三区| 一区二区三区中文在线观看| 91女厕偷拍女厕偷拍高清| 亚洲乱码国产乱码精品精可以看| 91视频www| 亚洲高清不卡在线观看| 在线播放一区二区三区| 美腿丝袜亚洲三区| 国产午夜精品一区二区三区视频| 国产传媒日韩欧美成人| 国产精品午夜春色av| 91亚洲男人天堂| 亚洲成人免费在线观看| 欧美成人三级在线| 国产精品一区在线| 玉足女爽爽91| 欧美一区2区视频在线观看| 韩国中文字幕2020精品| 国产精品高潮呻吟| 欧美剧在线免费观看网站 | 夜夜夜精品看看| 在线播放中文一区| 国产不卡高清在线观看视频| 一区二区三区在线观看欧美 | 欧美日韩日日夜夜| 麻豆精品国产91久久久久久| 中文在线一区二区| 欧美精品vⅰdeose4hd| 国产一区美女在线| 亚洲美女屁股眼交| 日韩精品中文字幕一区二区三区| 丁香网亚洲国际| 亚洲成人动漫在线免费观看| 久久婷婷国产综合国色天香| 色先锋资源久久综合| 久久成人久久鬼色| 樱桃国产成人精品视频| 精品久久久久久久久久久久包黑料| 成人av在线资源网| 久久99精品一区二区三区| 亚洲精品你懂的| 国产欧美一区二区精品仙草咪| 欧美在线观看18| 大白屁股一区二区视频| 奇米777欧美一区二区| 国产精品二区一区二区aⅴ污介绍| 制服丝袜日韩国产| 在线一区二区视频| 丁香激情综合国产| 激情五月激情综合网| 爽好多水快深点欧美视频| 中文字幕在线一区| 国产女主播在线一区二区| 欧美一区二区久久| 在线看日韩精品电影| www..com久久爱| 国产乱国产乱300精品| 麻豆精品视频在线| 日韩国产欧美三级| 亚洲一区二区三区美女| 亚洲精品国产精品乱码不99| 国产亚洲午夜高清国产拍精品| 欧美一区二区在线不卡| 欧美综合一区二区三区| 色诱亚洲精品久久久久久| 成人高清在线视频| 高清视频一区二区| 成人在线综合网站| 国产精品一区二区x88av| 国产真实乱偷精品视频免| 美女视频黄频大全不卡视频在线播放| 无吗不卡中文字幕| 亚洲午夜久久久久中文字幕久| 依依成人综合视频| 亚洲精品精品亚洲| 一区二区在线观看视频 | 337p粉嫩大胆色噜噜噜噜亚洲| 欧美日韩aaa| 在线成人免费观看| 欧美日本精品一区二区三区| 欧美日韩国产三级| 欧美一二三区在线观看| 91精品国产综合久久蜜臀 | 色激情天天射综合网| 一本到不卡免费一区二区| 99久久精品国产一区二区三区| av电影在线观看一区| 色婷婷综合中文久久一本| 欧洲一区二区av| 欧美人伦禁忌dvd放荡欲情| 日韩欧美成人激情| 欧美激情一区二区三区在线| 国产精品久久久久久久久久久免费看 | 国产一区二区三区日韩| 激情成人午夜视频| k8久久久一区二区三区| 欧美亚洲日本国产| 精品欧美乱码久久久久久| 久久精品在线观看| 亚洲卡通欧美制服中文| 天堂精品中文字幕在线| 国产主播一区二区| 91丝袜高跟美女视频| 欧美日韩一区三区| 久久久午夜精品| 亚洲另类在线制服丝袜| 蜜臀久久99精品久久久久久9 | 精品一区二区三区视频在线观看| 极品美女销魂一区二区三区免费| 国产精品77777| 91黄视频在线观看| 2019国产精品| 亚洲品质自拍视频网站| 久久国产精品99久久人人澡| 99精品国产热久久91蜜凸| 91精品国产91久久综合桃花 | 综合激情成人伊人| 蜜桃精品在线观看| 91香蕉视频黄| 精品久久久久香蕉网| 亚洲欧美日韩精品久久久久| 美女视频网站久久| 色哟哟精品一区| 久久久九九九九| 亚洲国产精品尤物yw在线观看| 国产精品亚洲视频| 欧美体内she精视频| 中文字幕精品—区二区四季| 婷婷激情综合网| 成人午夜精品在线| 欧美精品少妇一区二区三区| 国产精品久久久久精k8| 精品伊人久久久久7777人| 欧美日韩精品系列| 亚洲日本欧美天堂| 国产**成人网毛片九色| 欧美成人精品3d动漫h| 五月婷婷综合网| 97精品视频在线观看自产线路二| 欧美白人最猛性xxxxx69交| 一区二区三区 在线观看视频| 国产精品一二三区| 欧美一区二区三区白人| 亚洲成av人片一区二区| 91热门视频在线观看| 国产亚洲一区二区三区| 卡一卡二国产精品| 欧美二区三区的天堂| 亚洲图片自拍偷拍| 色噜噜夜夜夜综合网| 亚洲女子a中天字幕| av电影天堂一区二区在线| 国产目拍亚洲精品99久久精品| 久久99久久99| 精品国产乱码久久久久久久久| 亚洲成a天堂v人片| 欧美日韩国产高清一区二区三区|