index.vue 29 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440
  1. <template>
  2. <view>
  3. <div class="camera-wrap">
  4. <camera ref="camera" resolution="high" class="camera" frame-size="small" device-position="back" flash="off" @error="error"></camera>
  5. <image class="avatar" src="../static/avatar.png"></image>
  6. </div>
  7. <button @click="takePhoto">精度{{point}}</button>
  8. <text>{{isCard?'拍到了':''}}</text>
  9. <!-- <image class="img" :src="src" mode="widthFix"></image> -->
  10. <!-- <view style="width:0;height:0;overflow: hidden;"> -->
  11. <canvas class="canvas" canvas-id="canvas1"></canvas>
  12. <canvas class="canvas" canvas-id="canvas"></canvas>
  13. <!-- </view> -->
  14. </view>
  15. </template>
  16. <script>
  17. import { mapGetters } from 'vuex';
  18. export default {
  19. data() {
  20. return {
  21. point:0,
  22. context:null,
  23. src:"",
  24. isCompare:false,
  25. isCard:false,
  26. frontData:[
  27. 1,
  28. 1,
  29. 1,
  30. 1,
  31. 1,
  32. 1,
  33. 1,
  34. 1,
  35. 1,
  36. 1,
  37. 1,
  38. 1,
  39. 1,
  40. 1,
  41. 1,
  42. 1,
  43. 1,
  44. 1,
  45. 1,
  46. 1,
  47. 1,
  48. 1,
  49. 1,
  50. 1,
  51. 1,
  52. 1,
  53. 1,
  54. 1,
  55. 1,
  56. 1,
  57. 1,
  58. 1,
  59. 1,
  60. 1,
  61. 1,
  62. 1,
  63. 1,
  64. 1,
  65. 1,
  66. 1,
  67. 1,
  68. 1,
  69. 1,
  70. 1,
  71. 1,
  72. 1,
  73. 1,
  74. 1,
  75. 1,
  76. 1,
  77. 1,
  78. 1,
  79. 1,
  80. 1,
  81. 1,
  82. 1,
  83. 1,
  84. 1,
  85. 1,
  86. 1,
  87. 1,
  88. 1,
  89. 1,
  90. 1,
  91. 1,
  92. 1,
  93. 1,
  94. 1,
  95. 1,
  96. 1,
  97. 1,
  98. 1,
  99. 1,
  100. 1,
  101. 1,
  102. 1,
  103. 1,
  104. 1,
  105. 1,
  106. 1,
  107. 1,
  108. 1,
  109. 1,
  110. 1,
  111. 1,
  112. 1,
  113. 1,
  114. 1,
  115. 1,
  116. 1,
  117. 1,
  118. 1,
  119. 1,
  120. 1,
  121. 1,
  122. 1,
  123. 1,
  124. 1,
  125. 1,
  126. 1,
  127. 1,
  128. 1,
  129. 1,
  130. 1,
  131. 1,
  132. 1,
  133. 1,
  134. 1,
  135. 1,
  136. 1,
  137. 1,
  138. 1,
  139. 1,
  140. 1,
  141. 1,
  142. 1,
  143. 1,
  144. 1,
  145. 1,
  146. 1,
  147. 1,
  148. 1,
  149. 1,
  150. 1,
  151. 1,
  152. 1,
  153. 1,
  154. 1,
  155. 1,
  156. 1,
  157. 1,
  158. 1,
  159. 1,
  160. 1,
  161. 1,
  162. 1,
  163. 1,
  164. 1,
  165. 1,
  166. 1,
  167. 1,
  168. 1,
  169. 1,
  170. 1,
  171. 1,
  172. 1,
  173. 1,
  174. 1,
  175. 1,
  176. 1,
  177. 1,
  178. 1,
  179. 1,
  180. 1,
  181. 1,
  182. 1,
  183. 1,
  184. 1,
  185. 1,
  186. 1,
  187. 1,
  188. 1,
  189. 1,
  190. 1,
  191. 1,
  192. 1,
  193. 1,
  194. 1,
  195. 1,
  196. 1,
  197. 1,
  198. 1,
  199. 1,
  200. 1,
  201. 1,
  202. 1,
  203. 1,
  204. 1,
  205. 1,
  206. 1,
  207. 1,
  208. 1,
  209. 1,
  210. 1,
  211. 1,
  212. 1,
  213. 1,
  214. 1,
  215. 1,
  216. 1,
  217. 1,
  218. 1,
  219. 1,
  220. 1,
  221. 1,
  222. 1,
  223. 1,
  224. 1,
  225. 1,
  226. 1,
  227. 1,
  228. 1,
  229. 1,
  230. 1,
  231. 1,
  232. 1,
  233. 1,
  234. 1,
  235. 1,
  236. 1,
  237. 1,
  238. 1,
  239. 1,
  240. 1,
  241. 1,
  242. 1,
  243. 1,
  244. 1,
  245. 1,
  246. 1,
  247. 1,
  248. 1,
  249. 1,
  250. 1,
  251. 1,
  252. 1,
  253. 1,
  254. 1,
  255. 1,
  256. 1,
  257. 1,
  258. 1,
  259. 1,
  260. 1,
  261. 1,
  262. 1,
  263. 1,
  264. 1,
  265. 1,
  266. 1,
  267. 1,
  268. 1,
  269. 1,
  270. 1,
  271. 1,
  272. 1,
  273. 1,
  274. 1,
  275. 1,
  276. 1,
  277. 1,
  278. 1,
  279. 1,
  280. 1,
  281. 1,
  282. 1,
  283. 1,
  284. 1,
  285. 1,
  286. 1,
  287. 1,
  288. 1,
  289. 1,
  290. 1,
  291. 1,
  292. 1,
  293. 1,
  294. 1,
  295. 1,
  296. 1,
  297. 1,
  298. 1,
  299. 1,
  300. 1,
  301. 1,
  302. 1,
  303. 1,
  304. 1,
  305. 1,
  306. 1,
  307. 1,
  308. 1,
  309. 1,
  310. 1,
  311. 1,
  312. 1,
  313. 1,
  314. 1,
  315. 1,
  316. 1,
  317. 1,
  318. 1,
  319. 1,
  320. 1,
  321. 1,
  322. 1,
  323. 1,
  324. 1,
  325. 1,
  326. 1,
  327. 1,
  328. 1,
  329. 1,
  330. 1,
  331. 1,
  332. 1,
  333. 1,
  334. 1,
  335. 1,
  336. 1,
  337. 1,
  338. 1,
  339. 1,
  340. 1,
  341. 1,
  342. 1,
  343. 1,
  344. 0,
  345. 1,
  346. 1,
  347. 0,
  348. 1,
  349. 1,
  350. 0,
  351. 0,
  352. 1,
  353. 1,
  354. 1,
  355. 1,
  356. 1,
  357. 1,
  358. 1,
  359. 1,
  360. 1,
  361. 1,
  362. 1,
  363. 1,
  364. 1,
  365. 1,
  366. 1,
  367. 1,
  368. 1,
  369. 0,
  370. 0,
  371. 1,
  372. 1,
  373. 1,
  374. 1,
  375. 1,
  376. 1,
  377. 1,
  378. 1,
  379. 1,
  380. 1,
  381. 1,
  382. 0,
  383. 1,
  384. 1,
  385. 1,
  386. 1,
  387. 1,
  388. 1,
  389. 0,
  390. 0,
  391. 1,
  392. 1,
  393. 1,
  394. 0,
  395. 0,
  396. 1,
  397. 1,
  398. 1,
  399. 1,
  400. 1,
  401. 1,
  402. 1,
  403. 1,
  404. 1,
  405. 1,
  406. 1,
  407. 1,
  408. 1,
  409. 1,
  410. 1,
  411. 0,
  412. 0,
  413. 0,
  414. 0,
  415. 0,
  416. 1,
  417. 1,
  418. 1,
  419. 1,
  420. 1,
  421. 1,
  422. 1,
  423. 1,
  424. 1,
  425. 1,
  426. 1,
  427. 1,
  428. 1,
  429. 1,
  430. 1,
  431. 1,
  432. 1,
  433. 1,
  434. 1,
  435. 1,
  436. 1,
  437. 1,
  438. 1,
  439. 1,
  440. 1,
  441. 1,
  442. 1,
  443. 1,
  444. 1,
  445. 1,
  446. 1,
  447. 1,
  448. 1,
  449. 1,
  450. 1,
  451. 1,
  452. 1,
  453. 1,
  454. 0,
  455. 0,
  456. 0,
  457. 0,
  458. 0,
  459. 0,
  460. 0,
  461. 1,
  462. 1,
  463. 1,
  464. 1,
  465. 1,
  466. 1,
  467. 1,
  468. 1,
  469. 1,
  470. 1,
  471. 1,
  472. 1,
  473. 1,
  474. 1,
  475. 1,
  476. 1,
  477. 1,
  478. 1,
  479. 1,
  480. 1,
  481. 1,
  482. 1,
  483. 1,
  484. 1,
  485. 1,
  486. 1,
  487. 1,
  488. 1,
  489. 1,
  490. 1,
  491. 1,
  492. 1,
  493. 1,
  494. 1,
  495. 1,
  496. 1,
  497. 0,
  498. 0,
  499. 0,
  500. 0,
  501. 0,
  502. 0,
  503. 0,
  504. 0,
  505. 1,
  506. 1,
  507. 1,
  508. 1,
  509. 1,
  510. 1,
  511. 1,
  512. 1,
  513. 1,
  514. 1,
  515. 1,
  516. 1,
  517. 1,
  518. 1,
  519. 1,
  520. 1,
  521. 1,
  522. 1,
  523. 1,
  524. 1,
  525. 1,
  526. 1,
  527. 1,
  528. 1,
  529. 1,
  530. 1,
  531. 1,
  532. 1,
  533. 1,
  534. 1,
  535. 1,
  536. 1,
  537. 1,
  538. 1,
  539. 1,
  540. 1,
  541. 0,
  542. 0,
  543. 0,
  544. 0,
  545. 0,
  546. 0,
  547. 0,
  548. 0,
  549. 1,
  550. 1,
  551. 1,
  552. 1,
  553. 1,
  554. 1,
  555. 1,
  556. 1,
  557. 1,
  558. 1,
  559. 1,
  560. 1,
  561. 1,
  562. 1,
  563. 1,
  564. 0,
  565. 1,
  566. 1,
  567. 1,
  568. 1,
  569. 1,
  570. 1,
  571. 1,
  572. 0,
  573. 1,
  574. 1,
  575. 1,
  576. 1,
  577. 1,
  578. 1,
  579. 1,
  580. 1,
  581. 1,
  582. 1,
  583. 1,
  584. 1,
  585. 0,
  586. 0,
  587. 0,
  588. 0,
  589. 0,
  590. 0,
  591. 0,
  592. 0,
  593. 0,
  594. 1,
  595. 1,
  596. 1,
  597. 1,
  598. 1,
  599. 1,
  600. 1,
  601. 1,
  602. 1,
  603. 1,
  604. 1,
  605. 1,
  606. 1,
  607. 1,
  608. 0,
  609. 1,
  610. 1,
  611. 1,
  612. 0,
  613. 1,
  614. 1,
  615. 1,
  616. 1,
  617. 1,
  618. 1,
  619. 1,
  620. 1,
  621. 1,
  622. 1,
  623. 1,
  624. 1,
  625. 1,
  626. 1,
  627. 1,
  628. 1,
  629. 0,
  630. 0,
  631. 0,
  632. 1,
  633. 1,
  634. 1,
  635. 1,
  636. 0,
  637. 0,
  638. 1,
  639. 1,
  640. 1,
  641. 1,
  642. 1,
  643. 1,
  644. 1,
  645. 1,
  646. 1,
  647. 1,
  648. 1,
  649. 1,
  650. 1,
  651. 1,
  652. 1,
  653. 1,
  654. 1,
  655. 1,
  656. 1,
  657. 1,
  658. 1,
  659. 1,
  660. 1,
  661. 1,
  662. 1,
  663. 1,
  664. 1,
  665. 1,
  666. 1,
  667. 1,
  668. 1,
  669. 1,
  670. 1,
  671. 1,
  672. 1,
  673. 0,
  674. 0,
  675. 0,
  676. 0,
  677. 1,
  678. 1,
  679. 1,
  680. 0,
  681. 0,
  682. 1,
  683. 1,
  684. 1,
  685. 1,
  686. 1,
  687. 1,
  688. 1,
  689. 1,
  690. 1,
  691. 1,
  692. 1,
  693. 1,
  694. 1,
  695. 1,
  696. 1,
  697. 1,
  698. 1,
  699. 1,
  700. 1,
  701. 1,
  702. 1,
  703. 1,
  704. 1,
  705. 1,
  706. 1,
  707. 1,
  708. 1,
  709. 1,
  710. 1,
  711. 1,
  712. 1,
  713. 1,
  714. 1,
  715. 1,
  716. 1,
  717. 0,
  718. 0,
  719. 0,
  720. 1,
  721. 1,
  722. 1,
  723. 0,
  724. 0,
  725. 0,
  726. 1,
  727. 1,
  728. 1,
  729. 1,
  730. 1,
  731. 1,
  732. 1,
  733. 1,
  734. 1,
  735. 1,
  736. 1,
  737. 1,
  738. 1,
  739. 1,
  740. 1,
  741. 1,
  742. 1,
  743. 1,
  744. 1,
  745. 1,
  746. 1,
  747. 1,
  748. 1,
  749. 1,
  750. 1,
  751. 1,
  752. 1,
  753. 1,
  754. 1,
  755. 1,
  756. 1,
  757. 1,
  758. 1,
  759. 1,
  760. 1,
  761. 0,
  762. 0,
  763. 0,
  764. 0,
  765. 1,
  766. 0,
  767. 0,
  768. 0,
  769. 0,
  770. 1,
  771. 1,
  772. 1,
  773. 1,
  774. 1,
  775. 1,
  776. 1,
  777. 1,
  778. 1,
  779. 1,
  780. 1,
  781. 1,
  782. 1,
  783. 1,
  784. 1,
  785. 1,
  786. 1,
  787. 1,
  788. 1,
  789. 1,
  790. 1,
  791. 1,
  792. 1,
  793. 1,
  794. 1,
  795. 1,
  796. 1,
  797. 1,
  798. 1,
  799. 1,
  800. 1,
  801. 1,
  802. 1,
  803. 1,
  804. 1,
  805. 0,
  806. 0,
  807. 0,
  808. 0,
  809. 0,
  810. 0,
  811. 0,
  812. 0,
  813. 1,
  814. 1,
  815. 1,
  816. 1,
  817. 1,
  818. 1,
  819. 1,
  820. 1,
  821. 1,
  822. 1,
  823. 1,
  824. 1,
  825. 1,
  826. 1,
  827. 1,
  828. 1,
  829. 1,
  830. 0,
  831. 1,
  832. 1,
  833. 1,
  834. 0,
  835. 1,
  836. 1,
  837. 1,
  838. 0,
  839. 1,
  840. 1,
  841. 0,
  842. 1,
  843. 1,
  844. 1,
  845. 1,
  846. 1,
  847. 1,
  848. 1,
  849. 0,
  850. 0,
  851. 0,
  852. 0,
  853. 1,
  854. 0,
  855. 0,
  856. 0,
  857. 1,
  858. 1,
  859. 1,
  860. 1,
  861. 1,
  862. 1,
  863. 1,
  864. 1,
  865. 1,
  866. 1,
  867. 1,
  868. 1,
  869. 1,
  870. 1,
  871. 1,
  872. 1,
  873. 1,
  874. 1,
  875. 1,
  876. 1,
  877. 1,
  878. 1,
  879. 1,
  880. 1,
  881. 1,
  882. 1,
  883. 1,
  884. 1,
  885. 1,
  886. 1,
  887. 1,
  888. 1,
  889. 1,
  890. 1,
  891. 1,
  892. 1,
  893. 0,
  894. 0,
  895. 0,
  896. 0,
  897. 1,
  898. 0,
  899. 0,
  900. 0,
  901. 1,
  902. 1,
  903. 1,
  904. 1,
  905. 1,
  906. 1,
  907. 1,
  908. 1,
  909. 1,
  910. 1,
  911. 1,
  912. 1,
  913. 1,
  914. 1,
  915. 1,
  916. 1,
  917. 1,
  918. 1,
  919. 1,
  920. 1,
  921. 1,
  922. 1,
  923. 1,
  924. 1,
  925. 1,
  926. 1,
  927. 1,
  928. 1,
  929. 1,
  930. 1,
  931. 1,
  932. 1,
  933. 1,
  934. 1,
  935. 1,
  936. 1,
  937. 1,
  938. 0,
  939. 1,
  940. 0,
  941. 1,
  942. 0,
  943. 1,
  944. 0,
  945. 1,
  946. 1,
  947. 1,
  948. 1,
  949. 1,
  950. 1,
  951. 1,
  952. 1,
  953. 1,
  954. 1,
  955. 1,
  956. 1,
  957. 1,
  958. 1,
  959. 1,
  960. 1,
  961. 1,
  962. 1,
  963. 1,
  964. 1,
  965. 1,
  966. 1,
  967. 1,
  968. 1,
  969. 1,
  970. 1,
  971. 1,
  972. 1,
  973. 1,
  974. 1,
  975. 1,
  976. 1,
  977. 1,
  978. 1,
  979. 1,
  980. 1,
  981. 1,
  982. 0,
  983. 0,
  984. 0,
  985. 0,
  986. 0,
  987. 0,
  988. 0,
  989. 1,
  990. 1,
  991. 1,
  992. 1,
  993. 1,
  994. 1,
  995. 1,
  996. 1,
  997. 1,
  998. 1,
  999. 1,
  1000. 1,
  1001. 1,
  1002. 1,
  1003. 1,
  1004. 1,
  1005. 1,
  1006. 1,
  1007. 1,
  1008. 1,
  1009. 1,
  1010. 1,
  1011. 1,
  1012. 1,
  1013. 1,
  1014. 1,
  1015. 1,
  1016. 1,
  1017. 1,
  1018. 1,
  1019. 1,
  1020. 1,
  1021. 1,
  1022. 1,
  1023. 1,
  1024. 1,
  1025. 1,
  1026. 0,
  1027. 0,
  1028. 0,
  1029. 0,
  1030. 0,
  1031. 0,
  1032. 1,
  1033. 1,
  1034. 1,
  1035. 1,
  1036. 1,
  1037. 1,
  1038. 1,
  1039. 1,
  1040. 1,
  1041. 1,
  1042. 1,
  1043. 1,
  1044. 1,
  1045. 1,
  1046. 1,
  1047. 1,
  1048. 1,
  1049. 0,
  1050. 1,
  1051. 0,
  1052. 1,
  1053. 0,
  1054. 0,
  1055. 0,
  1056. 0,
  1057. 1,
  1058. 0,
  1059. 1,
  1060. 1,
  1061. 1,
  1062. 1,
  1063. 1,
  1064. 1,
  1065. 1,
  1066. 1,
  1067. 1,
  1068. 1,
  1069. 1,
  1070. 1,
  1071. 0,
  1072. 0,
  1073. 0,
  1074. 0,
  1075. 0,
  1076. 1,
  1077. 1,
  1078. 1,
  1079. 1,
  1080. 1,
  1081. 1,
  1082. 1,
  1083. 1,
  1084. 1,
  1085. 1,
  1086. 1,
  1087. 1,
  1088. 1,
  1089. 1,
  1090. 1,
  1091. 1,
  1092. 0,
  1093. 1,
  1094. 1,
  1095. 1,
  1096. 1,
  1097. 1,
  1098. 1,
  1099. 1,
  1100. 1,
  1101. 1,
  1102. 1,
  1103. 0,
  1104. 1,
  1105. 0,
  1106. 1,
  1107. 1,
  1108. 1,
  1109. 1,
  1110. 1,
  1111. 1,
  1112. 1,
  1113. 1,
  1114. 0,
  1115. 0,
  1116. 0,
  1117. 0,
  1118. 0,
  1119. 0,
  1120. 1,
  1121. 1,
  1122. 1,
  1123. 1,
  1124. 1,
  1125. 1,
  1126. 1,
  1127. 1,
  1128. 1,
  1129. 1,
  1130. 1,
  1131. 1,
  1132. 1,
  1133. 1,
  1134. 1,
  1135. 1,
  1136. 1,
  1137. 1,
  1138. 1,
  1139. 1,
  1140. 1,
  1141. 1,
  1142. 1,
  1143. 1,
  1144. 1,
  1145. 1,
  1146. 0,
  1147. 1,
  1148. 1,
  1149. 1,
  1150. 1,
  1151. 0,
  1152. 1,
  1153. 1,
  1154. 1,
  1155. 1,
  1156. 1,
  1157. 1,
  1158. 0,
  1159. 0,
  1160. 0,
  1161. 0,
  1162. 0,
  1163. 0,
  1164. 1,
  1165. 1,
  1166. 1,
  1167. 1,
  1168. 1,
  1169. 1,
  1170. 1,
  1171. 1,
  1172. 1,
  1173. 1,
  1174. 1,
  1175. 1,
  1176. 1,
  1177. 1,
  1178. 1,
  1179. 1,
  1180. 1,
  1181. 0,
  1182. 1,
  1183. 0,
  1184. 1,
  1185. 0,
  1186. 1,
  1187. 1,
  1188. 1,
  1189. 1,
  1190. 1,
  1191. 1,
  1192. 1,
  1193. 1,
  1194. 1,
  1195. 1,
  1196. 1,
  1197. 1,
  1198. 1,
  1199. 1,
  1200. 1,
  1201. 0,
  1202. 0,
  1203. 0,
  1204. 0,
  1205. 0,
  1206. 0,
  1207. 1,
  1208. 0,
  1209. 1,
  1210. 1,
  1211. 1,
  1212. 1,
  1213. 1,
  1214. 1,
  1215. 1,
  1216. 1,
  1217. 1,
  1218. 1,
  1219. 1,
  1220. 1,
  1221. 1,
  1222. 1,
  1223. 1,
  1224. 0,
  1225. 1,
  1226. 1,
  1227. 1,
  1228. 1,
  1229. 1,
  1230. 1,
  1231. 1,
  1232. 1,
  1233. 1,
  1234. 1,
  1235. 1,
  1236. 1,
  1237. 1,
  1238. 1,
  1239. 1,
  1240. 1,
  1241. 1,
  1242. 1,
  1243. 0,
  1244. 0,
  1245. 0,
  1246. 0,
  1247. 1,
  1248. 0,
  1249. 0,
  1250. 0,
  1251. 1,
  1252. 0,
  1253. 0,
  1254. 0,
  1255. 1,
  1256. 1,
  1257. 1,
  1258. 1,
  1259. 1,
  1260. 1,
  1261. 1,
  1262. 1,
  1263. 1,
  1264. 1,
  1265. 1,
  1266. 1,
  1267. 1,
  1268. 1,
  1269. 1,
  1270. 1,
  1271. 0,
  1272. 1,
  1273. 1,
  1274. 1,
  1275. 1,
  1276. 1,
  1277. 1,
  1278. 1,
  1279. 1,
  1280. 1,
  1281. 1,
  1282. 1,
  1283. 1,
  1284. 1,
  1285. 1,
  1286. 0,
  1287. 0,
  1288. 0,
  1289. 0,
  1290. 0,
  1291. 1,
  1292. 1,
  1293. 0,
  1294. 1,
  1295. 1,
  1296. 0,
  1297. 0,
  1298. 0,
  1299. 0,
  1300. 1,
  1301. 1,
  1302. 1,
  1303. 1,
  1304. 1,
  1305. 1,
  1306. 1,
  1307. 1,
  1308. 1,
  1309. 1,
  1310. 1,
  1311. 1,
  1312. 1,
  1313. 1,
  1314. 1,
  1315. 1,
  1316. 1,
  1317. 1,
  1318. 1,
  1319. 1,
  1320. 1,
  1321. 1,
  1322. 1,
  1323. 1,
  1324. 1,
  1325. 1,
  1326. 1,
  1327. 1,
  1328. 1,
  1329. 1,
  1330. 0,
  1331. 0,
  1332. 0,
  1333. 0,
  1334. 0,
  1335. 1,
  1336. 1,
  1337. 0,
  1338. 1,
  1339. 1,
  1340. 0,
  1341. 0,
  1342. 0,
  1343. 0,
  1344. 1,
  1345. 1,
  1346. 1,
  1347. 1,
  1348. 1,
  1349. 1,
  1350. 1,
  1351. 1,
  1352. 1,
  1353. 1,
  1354. 1,
  1355. 1,
  1356. 1,
  1357. 1,
  1358. 1,
  1359. 1,
  1360. 1,
  1361. 1,
  1362. 1,
  1363. 1,
  1364. 1,
  1365. 1,
  1366. 1,
  1367. 1,
  1368. 1,
  1369. 1,
  1370. 1,
  1371. 1,
  1372. 1,
  1373. 1,
  1374. 0,
  1375. 0,
  1376. 0,
  1377. 0,
  1378. 0,
  1379. 0,
  1380. 0,
  1381. 0,
  1382. 1,
  1383. 0,
  1384. 0,
  1385. 0,
  1386. 0,
  1387. 0,
  1388. 1,
  1389. 1,
  1390. 1,
  1391. 1,
  1392. 1,
  1393. 1,
  1394. 1,
  1395. 1,
  1396. 1,
  1397. 1,
  1398. 1,
  1399. 1,
  1400. 1,
  1401. 1,
  1402. 1,
  1403. 1,
  1404. 1,
  1405. 1,
  1406. 1,
  1407. 1,
  1408. 1,
  1409. 1,
  1410. 1,
  1411. 1,
  1412. 1,
  1413. 1,
  1414. 1,
  1415. 1,
  1416. 1,
  1417. 1,
  1418. 0,
  1419. 0,
  1420. 0,
  1421. 0,
  1422. 0,
  1423. 0,
  1424. 1,
  1425. 0,
  1426. 1,
  1427. 0,
  1428. 0,
  1429. 0,
  1430. 0,
  1431. 0,
  1432. 1,
  1433. 1,
  1434. 1,
  1435. 1,
  1436. 1,
  1437. 1,
  1438. 1,
  1439. 1,
  1440. 1,
  1441. 1,
  1442. 1,
  1443. 1,
  1444. 1,
  1445. 1,
  1446. 1,
  1447. 1,
  1448. 1,
  1449. 1,
  1450. 1,
  1451. 1,
  1452. 1,
  1453. 1,
  1454. 1,
  1455. 1,
  1456. 1,
  1457. 1,
  1458. 1,
  1459. 1,
  1460. 1,
  1461. 1,
  1462. 1,
  1463. 0,
  1464. 0,
  1465. 0,
  1466. 0,
  1467. 0,
  1468. 1,
  1469. 0,
  1470. 1,
  1471. 0,
  1472. 0,
  1473. 0,
  1474. 0,
  1475. 0,
  1476. 1,
  1477. 1,
  1478. 1,
  1479. 1,
  1480. 1,
  1481. 1,
  1482. 1,
  1483. 1,
  1484. 1,
  1485. 1,
  1486. 1,
  1487. 1,
  1488. 1,
  1489. 1,
  1490. 1,
  1491. 1,
  1492. 1,
  1493. 1,
  1494. 1,
  1495. 1,
  1496. 1,
  1497. 1,
  1498. 1,
  1499. 1,
  1500. 1,
  1501. 1,
  1502. 1,
  1503. 1,
  1504. 1,
  1505. 1,
  1506. 1,
  1507. 1,
  1508. 1,
  1509. 1,
  1510. 1,
  1511. 1,
  1512. 1,
  1513. 1,
  1514. 1,
  1515. 1,
  1516. 1,
  1517. 1,
  1518. 1,
  1519. 1,
  1520. 1,
  1521. 1,
  1522. 1,
  1523. 1,
  1524. 1,
  1525. 1,
  1526. 1,
  1527. 1,
  1528. 1,
  1529. 1,
  1530. 1,
  1531. 1,
  1532. 1,
  1533. 1,
  1534. 1,
  1535. 1,
  1536. 1,
  1537. 1,
  1538. 1,
  1539. 1,
  1540. 1,
  1541. 1,
  1542. 1,
  1543. 1,
  1544. 1,
  1545. 1,
  1546. 1,
  1547. 1,
  1548. 1,
  1549. 1,
  1550. 1,
  1551. 1,
  1552. 1,
  1553. 1,
  1554. 1,
  1555. 1,
  1556. 1,
  1557. 1,
  1558. 1,
  1559. 1,
  1560. 1,
  1561. 1,
  1562. 1,
  1563. 1,
  1564. 1,
  1565. 1,
  1566. 1,
  1567. 1,
  1568. 1,
  1569. 1,
  1570. 1,
  1571. 1,
  1572. 1,
  1573. 1,
  1574. 1,
  1575. 1,
  1576. 1,
  1577. 1,
  1578. 1,
  1579. 1,
  1580. 1,
  1581. 1,
  1582. 1,
  1583. 1,
  1584. 1,
  1585. 1,
  1586. 1,
  1587. 1,
  1588. 1,
  1589. 1,
  1590. 1,
  1591. 1,
  1592. 1,
  1593. 1,
  1594. 1,
  1595. 1,
  1596. 1,
  1597. 1,
  1598. 1,
  1599. 1,
  1600. 1,
  1601. 1,
  1602. 1,
  1603. 1,
  1604. 1,
  1605. 1,
  1606. 1,
  1607. 1,
  1608. 1,
  1609. 1,
  1610. 1,
  1611. 1,
  1612. 1,
  1613. 1,
  1614. 1,
  1615. 1,
  1616. 1,
  1617. 1,
  1618. 1,
  1619. 1,
  1620. 1,
  1621. 1,
  1622. 1,
  1623. 1,
  1624. 1,
  1625. 1,
  1626. 1,
  1627. 1,
  1628. 1,
  1629. 1,
  1630. 1,
  1631. 1,
  1632. 1,
  1633. 1,
  1634. 1,
  1635. 1,
  1636. 1,
  1637. 1,
  1638. 1,
  1639. 1,
  1640. 1,
  1641. 1,
  1642. 1,
  1643. 1,
  1644. 1,
  1645. 1,
  1646. 1,
  1647. 1,
  1648. 1,
  1649. 1,
  1650. 1,
  1651. 1,
  1652. 1,
  1653. 1,
  1654. 1,
  1655. 1,
  1656. 1,
  1657. 1,
  1658. 1,
  1659. 1,
  1660. 1,
  1661. 1,
  1662. 0,
  1663. 0,
  1664. 1,
  1665. 1,
  1666. 1,
  1667. 1,
  1668. 1,
  1669. 1,
  1670. 0,
  1671. 0,
  1672. 1,
  1673. 1,
  1674. 1,
  1675. 0,
  1676. 0,
  1677. 1,
  1678. 1,
  1679. 1,
  1680. 0,
  1681. 1,
  1682. 1,
  1683. 1,
  1684. 1,
  1685. 1,
  1686. 1,
  1687. 0,
  1688. 0,
  1689. 1,
  1690. 1,
  1691. 1,
  1692. 0,
  1693. 0,
  1694. 1,
  1695. 1,
  1696. 1,
  1697. 1,
  1698. 1,
  1699. 1,
  1700. 1,
  1701. 1,
  1702. 1,
  1703. 1,
  1704. 0,
  1705. 1,
  1706. 1,
  1707. 1,
  1708. 1,
  1709. 1,
  1710. 1,
  1711. 1,
  1712. 1,
  1713. 1,
  1714. 1,
  1715. 1,
  1716. 1,
  1717. 0,
  1718. 1,
  1719. 1,
  1720. 1,
  1721. 1,
  1722. 0,
  1723. 1,
  1724. 0,
  1725. 1,
  1726. 1,
  1727. 0,
  1728. 1,
  1729. 0,
  1730. 1,
  1731. 1,
  1732. 0,
  1733. 1,
  1734. 0,
  1735. 1,
  1736. 1,
  1737. 1,
  1738. 1,
  1739. 1,
  1740. 1,
  1741. 1,
  1742. 1,
  1743. 1,
  1744. 1,
  1745. 1,
  1746. 1,
  1747. 1,
  1748. 1,
  1749. 1,
  1750. 1,
  1751. 1,
  1752. 1,
  1753. 1,
  1754. 1,
  1755. 1,
  1756. 1,
  1757. 1,
  1758. 1,
  1759. 1,
  1760. 1,
  1761. 1,
  1762. 1,
  1763. 1,
  1764. 1,
  1765. 1,
  1766. 1,
  1767. 1,
  1768. 1,
  1769. 1,
  1770. 1,
  1771. 1,
  1772. 1,
  1773. 1,
  1774. 1,
  1775. 1,
  1776. 1,
  1777. 1,
  1778. 1,
  1779. 1,
  1780. 1,
  1781. 1,
  1782. 1,
  1783. 1,
  1784. 1,
  1785. 1,
  1786. 1,
  1787. 1,
  1788. 1,
  1789. 1,
  1790. 1,
  1791. 1,
  1792. 1,
  1793. 1,
  1794. 1,
  1795. 1,
  1796. 1,
  1797. 1,
  1798. 1,
  1799. 1,
  1800. 1,
  1801. 1,
  1802. 1,
  1803. 1,
  1804. 1,
  1805. 1,
  1806. 1,
  1807. 1,
  1808. 1,
  1809. 1,
  1810. 1,
  1811. 1,
  1812. 1,
  1813. 1,
  1814. 1,
  1815. 1,
  1816. 1,
  1817. 1,
  1818. 1,
  1819. 1,
  1820. 1,
  1821. 1,
  1822. 1,
  1823. 1,
  1824. 1,
  1825. 1,
  1826. 1,
  1827. 1,
  1828. 1,
  1829. 1,
  1830. 1,
  1831. 1,
  1832. 1,
  1833. 1,
  1834. 1,
  1835. 1,
  1836. 1,
  1837. 1,
  1838. 1,
  1839. 1,
  1840. 1,
  1841. 1,
  1842. 1,
  1843. 1,
  1844. 1,
  1845. 1,
  1846. 1,
  1847. 1,
  1848. 1,
  1849. 1,
  1850. 1,
  1851. 1,
  1852. 1,
  1853. 1,
  1854. 1,
  1855. 1,
  1856. 1,
  1857. 1,
  1858. 1,
  1859. 1,
  1860. 1,
  1861. 1,
  1862. 1,
  1863. 1,
  1864. 1,
  1865. 1,
  1866. 1,
  1867. 1,
  1868. 1,
  1869. 1,
  1870. 1,
  1871. 1,
  1872. 1,
  1873. 1,
  1874. 1,
  1875. 1,
  1876. 1,
  1877. 1,
  1878. 1,
  1879. 1,
  1880. 1,
  1881. 1,
  1882. 1,
  1883. 1,
  1884. 1,
  1885. 1,
  1886. 1,
  1887. 1,
  1888. 1,
  1889. 1,
  1890. 1,
  1891. 1,
  1892. 1,
  1893. 1,
  1894. 1,
  1895. 1,
  1896. 1,
  1897. 1,
  1898. 1,
  1899. 1,
  1900. 1,
  1901. 1,
  1902. 1,
  1903. 1,
  1904. 1,
  1905. 1,
  1906. 1,
  1907. 1,
  1908. 1,
  1909. 1,
  1910. 1,
  1911. 1,
  1912. 1,
  1913. 1,
  1914. 1,
  1915. 1,
  1916. 1,
  1917. 1,
  1918. 1,
  1919. 1,
  1920. 1,
  1921. 1,
  1922. 1,
  1923. 1,
  1924. 1,
  1925. 1,
  1926. 1,
  1927. 1,
  1928. 1,
  1929. 1,
  1930. 1,
  1931. 1,
  1932. 1,
  1933. 1,
  1934. 1,
  1935. 1,
  1936. 1,
  1937. 1,
  1938. 1,
  1939. 1,
  1940. 1,
  1941. 1,
  1942. 1,
  1943. 1,
  1944. 1,
  1945. 1,
  1946. 1,
  1947. 1,
  1948. 1,
  1949. 1,
  1950. 1,
  1951. 1,
  1952. 1,
  1953. 1,
  1954. 1,
  1955. 1,
  1956. 1,
  1957. 1,
  1958. 1,
  1959. 1,
  1960. 1,
  1961. 1,
  1962. 1
  1963. ], //身份证人脸面模板特征值
  1964. backData:'1111100111111111111110110111111101111110111111111111111111110011111111111111111111111111111111111110001111101111111110111110111111000001111000010100101011001111110000011110010101001000000011110000000111111111100011101110111110000000111111111111111110111111100000001111111111111111111111111000000110101100110011001101010111000001000011101100010001000111110000011000110011001100010001000100000110001000110011000100010111100111111111101110110010110101110011111111111111100011111101111111111111111111111100111011110111111010111111111111001100011111110110011101111111110000011111111111111111111111111001101111111111110111111101111100111101111111111110011110111110100101000111110110101111101111111111111011111111111111111110010110011110111110111111100000000000000101101111101111111100001000000010011011111001111111111111111110100110111111111011111011111111100111111111111111111000001010110000001011111111011110000010001101000010011111111001111111111111111111111111110111111111111111111111111111111101111111111111111101111111111110' //身份证国徽面模板特征值
  1965. };
  1966. },
  1967. computed: { ...mapGetters(['userInfo','goodsAuditionConfigIdList','playSectionId']) },
  1968. onLoad(option) {
  1969. },
  1970. onUnload(option) {
  1971. },
  1972. mounted() {
  1973. this.context = uni.createCanvasContext('canvas')
  1974. const ctx = uni.createCameraContext();
  1975. const listener = ctx.onCameraFrame(frame => {
  1976. if(!this.isCompare) {
  1977. this.isCompare = true;
  1978. uni.getSystemInfo({
  1979.   success: (res) => { // res - 各种参数
  1980.    let info = uni.createSelectorQuery().select(".canvas");
  1981.      info.boundingClientRect((data1) => { //data - 各种参数
  1982. var buffer = new Uint8ClampedArray(frame.data);
  1983. //获取是实时拍照原图
  1984. uni.canvasPutImageData({
  1985. canvasId: 'canvas',
  1986. x: 0,
  1987. y: 0,
  1988. width: frame.width,
  1989. height: frame.height,
  1990. data: buffer,
  1991. success:(res) => {
  1992. //生成图片
  1993. uni.canvasToTempFilePath({
  1994. quality:1,
  1995. x: 0,
  1996. y: 0,
  1997. width: frame.width,
  1998. height: frame.height,
  1999. destWidth:data1.width,
  2000. destHeight:data1.height,
  2001. canvasId: 'canvas',
  2002. success: (res) => {
  2003. // 在H5平台下,tempFilePath 为 base64
  2004. //绘制原图到canvas上
  2005. this.context.drawImage(res.tempFilePath,0,0,data1.width,data1.height)
  2006. this.context.draw();
  2007. let avatarInfo = uni.createSelectorQuery().select(".avatar");
  2008. //获取原图扫描框大小
  2009. avatarInfo.boundingClientRect((data) => {
  2010. // //data - 各种参数
  2011. let left = data.left;
  2012. let top = data.top;
  2013. let width = data.width;
  2014. let height = data.height;
  2015. //获取原图扫描框内容
  2016. uni.canvasGetImageData({
  2017. canvasId: 'canvas',
  2018. x: left,
  2019. y: top,
  2020. width: width,
  2021. height: height,
  2022. success:(res) => {
  2023. // this.isCompare = false;
  2024. //绘制扫描图片
  2025. uni.canvasPutImageData({
  2026. canvasId: 'canvas',
  2027. x: 0,
  2028. y: 0,
  2029. width: width,
  2030. height: height,
  2031. data: res.data,
  2032. success:(res) => {
  2033. //生成图片
  2034. uni.canvasToTempFilePath({
  2035. quality:1,
  2036. x: 0,
  2037. y: 0,
  2038. destWidth:width,
  2039. destHeight:height,
  2040. width: width,
  2041. height: height,
  2042. canvasId: 'canvas',
  2043. success:async (res1) => {
  2044. //绘制并压缩
  2045. this.context.drawImage(res1.tempFilePath,0,0,width,height,0,0,44,44)
  2046. this.context.draw();
  2047. let res = await this.canvasGetImageData('canvas');
  2048. let newData = Array(res.data.length)
  2049. newData.fill(0)
  2050. res.data.forEach((_data, index) => {
  2051. if ((index + 1) % 4 === 0) {
  2052. const R = res.data[index - 3]
  2053. const G = res.data[index - 2]
  2054. const B = res.data[index - 1]
  2055. const gray = ~~((R + G + B) / 3)
  2056. res.data[index - 3] = gray
  2057. res.data[index - 2] = gray
  2058. res.data[index - 1] = gray
  2059. res.data[index] = 255 // Alpha 值固定为255
  2060. }
  2061. })
  2062. uni.canvasPutImageData({
  2063. canvasId: 'canvas1',
  2064. x: 0,
  2065. y: 0,
  2066. width: res.width,
  2067. height: res.height,
  2068. data: res.data,
  2069. success:(res) => {
  2070. // this.isCompare = false;
  2071. uni.canvasToTempFilePath({
  2072. destWidth:res.width,
  2073. destHeight:res.height,
  2074. quality:1,
  2075. x: 0,
  2076. y: 0,
  2077. width: width,
  2078. height: height,
  2079. canvasId: 'canvas1',
  2080. success: (res2) => {
  2081. this.src = res2.tempFilePath
  2082. },
  2083. })
  2084. },
  2085. fail:err => {
  2086. console.log(err,'err')
  2087. }
  2088. })
  2089. // for (let i = 0; i < newData.length; i += 4) {
  2090. // let R = newData[i]
  2091. // let G = newData[i + 1]
  2092. // let B = newData[i + 2]
  2093. // let Alpha = newData[i + 3]
  2094. // }
  2095. // let getData = this.getHashFingerprint(res)
  2096. let threshold = this.OTSUAlgorithm(res)
  2097. let newImgData = this.binaryzation(res, threshold);
  2098. let fingerprint = this.getContentFeatureFingerprint(newImgData);
  2099. // let result = this.getPHashFingerprint(res)
  2100. let similarty = this.cosineSimilarity(this.frontData,fingerprint)
  2101. // let distance = this.hammingDistance(this.frontData,result)
  2102. // let similarty = (this.frontData.length - distance) / this.frontData.length
  2103. if(similarty >= 0.9) {
  2104. this.src = res1.tempFilePath
  2105. this.isCard = true;
  2106. }
  2107. this.point = similarty
  2108. setTimeout(() => {
  2109. this.isCompare = false;
  2110. },200)
  2111. console.log(similarty,'similarty')
  2112. },
  2113. })
  2114. },
  2115. })
  2116. }
  2117. })
  2118. }).exec()
  2119. }
  2120. })
  2121. },
  2122. fail(err) {
  2123. console.log(err)
  2124. }
  2125. })
  2126.    }).exec()
  2127. }
  2128. });
  2129. }
  2130. })
  2131. listener.start()
  2132. },
  2133. methods: {
  2134. error(err) {
  2135. console.log(err)
  2136. },
  2137. getContentFeatureFingerprint(imgData) {
  2138. const data = imgData.data;
  2139. const contentFeature = [];
  2140. for (let i = 0; i < data.length; i += 4) {
  2141. contentFeature.push(data[i] === 255 ? 1 : 0);
  2142. }
  2143. return contentFeature;
  2144. },
  2145. toGray (imgData) {
  2146. const GrayscaleWeight = { R : 0.299, G : 0.587, B : 0.114 }
  2147. const grayData = []
  2148. const data = imgData.data
  2149. for (let i = 0; i < data.length; i += 4) {
  2150. const gray = ~~(data[i] * GrayscaleWeight.R + data[i + 1] * GrayscaleWeight.G + data[i + 2] * GrayscaleWeight.B)
  2151. data[i] = data[i + 1] = data[i + 2] = gray
  2152. grayData.push(gray)
  2153. }
  2154. return grayData
  2155. } ,
  2156. OTSUAlgorithm (imgData) {
  2157. const grayData = this.toGray(imgData)
  2158. let ptr = 0
  2159. let histData = Array(256).fill(0)
  2160. let total = grayData.length
  2161. while (ptr < total) {
  2162. let h = 0xFF & grayData[ptr++]
  2163. histData[h]++
  2164. }
  2165. let sum = 0
  2166. for (let i = 0; i < 256; i++) {
  2167. sum += i * histData[i]
  2168. }
  2169. let wB = 0
  2170. let wF = 0
  2171. let sumB = 0
  2172. let varMax = 0
  2173. let threshold = 0
  2174. for (let t = 0; t < 256; t++) {
  2175. wB += histData[t]
  2176. if (wB === 0) continue
  2177. wF = total - wB
  2178. if (wF === 0) break
  2179. sumB += t * histData[t]
  2180. let mB = sumB / wB
  2181. let mF = (sum - sumB) / wF
  2182. let varBetween = wB * wF * (mB - mF) ** 2
  2183. if (varBetween > varMax) {
  2184. varMax = varBetween
  2185. threshold = t
  2186. }
  2187. }
  2188. return threshold
  2189. },
  2190. binaryzation (imgData, threshold) {
  2191. for (let i = 0; i < imgData.data.length; i += 4) {
  2192. let R = imgData.data[i]
  2193. let G = imgData.data[i + 1]
  2194. let B = imgData.data[i + 2]
  2195. let Alpha = imgData.data[i + 3]
  2196. let sum = (R + G + B) / 3
  2197. imgData.data[i] = sum > threshold ? 255 : 0
  2198. imgData.data[i + 1] = sum > threshold ? 255 : 0
  2199. imgData.data[i + 2] = sum > threshold ? 255 : 0
  2200. imgData.data[i + 3] = Alpha
  2201. }
  2202. return imgData
  2203. } ,
  2204. canvasGetImageData(id) {
  2205. return new Promise(resolve => {
  2206. uni.canvasGetImageData({
  2207. canvasId: id,
  2208. x: 0,
  2209. y: 0,
  2210. width: 44,
  2211. height: 44,
  2212. success:(res) => {
  2213. resolve(res)
  2214. },
  2215. })
  2216. })
  2217. },
  2218. hammingDistance (str1, str2) {
  2219. let distance = 0
  2220. const str1str1Arr = str1.split('')
  2221. const str2str2Arr = str2.split('')
  2222. str1str1Arr.forEach((letter, index) => {
  2223. if (letter !== str2str2Arr[index]) {
  2224. distance++
  2225. }
  2226. })
  2227. return distance
  2228. } ,
  2229. cosineSimilarity (sampleFingerprint, targetFingerprint) {
  2230. // cosθ = ∑n, i=1(Ai × Bi) / (√∑n, i=1(Ai)^2) × (√∑n, i=1(Bi)^2) = A · B / |A| × |B|
  2231. const length = sampleFingerprint.length
  2232. let innerProduct = 0
  2233. for (let i = 0; i < length; i++) {
  2234. innerProduct += sampleFingerprint[i] * targetFingerprint[i]
  2235. }
  2236. let vecA = 0
  2237. let vecB = 0
  2238. for (let i = 0; i < length; i++) {
  2239. vecA += sampleFingerprint[i] ** 2
  2240. vecB += targetFingerprint[i] ** 2
  2241. }
  2242. const outerProduct = Math.sqrt(vecA) * Math.sqrt(vecB)
  2243. return innerProduct / outerProduct
  2244. } ,
  2245. createGrayscale (imgData) {
  2246. const newData = Array(imgData.data.length)
  2247. newData.fill(0)
  2248. imgData.data.forEach((_data, index) => {
  2249. if ((index + 1) % 4 === 0) {
  2250. const R = imgData.data[index - 3]
  2251. const G = imgData.data[index - 2]
  2252. const B = imgData.data[index - 1]
  2253. const gray = ~~((R + G + B) / 3)
  2254. newData[index - 3] = gray
  2255. newData[index - 2] = gray
  2256. newData[index - 1] = gray
  2257. newData[index] = 255 // Alpha 值固定为255
  2258. }
  2259. })
  2260. return this.createImgData(newData)
  2261. } ,
  2262. getHashFingerprint (imgData) {
  2263. const grayList = imgData.data.reduce((pre, cur, index) => {
  2264. if ((index + 1) % 4 === 0) {
  2265. pre.push(imgData.data[index - 1])
  2266. }
  2267. return pre
  2268. }, [])
  2269. const length = grayList.length
  2270. const grayAverage = grayList.reduce((pre, next) => (pre + next), 0) / length
  2271. return grayList.map(gray => (gray >= grayAverage ? 1 : 0)).join('')
  2272. } ,
  2273. emoizeCosines (N, cosMap) {
  2274. cosMapcosMap = cosMap || {}
  2275. cosMap[N] = new Array(N * N)
  2276. let PI_N = Math.PI / N
  2277. for (let k = 0; k < N; k++) {
  2278. for (let n = 0; n < N; n++) {
  2279. cosMap[N][n + (k * N)] = Math.cos(PI_N * (n + 0.5) * k)
  2280. }
  2281. }
  2282. return cosMap
  2283. } ,
  2284. memoizeCosines (N, cosMap) {
  2285. cosMap = cosMap || {}
  2286. cosMap[N] = new Array(N * N)
  2287. let PI_N = Math.PI / N
  2288. for (let k = 0; k < N; k++) {
  2289. for (let n = 0; n < N; n++) {
  2290. cosMap[N][n + (k * N)] = Math.cos(PI_N * (n + 0.5) * k)
  2291. }
  2292. }
  2293. return cosMap
  2294. } ,
  2295. dct (signal, scale = 2) {
  2296. let L = signal.length
  2297. let cosMap = null
  2298. if (!cosMap || !cosMap[L]) {
  2299. cosMap = this.memoizeCosines(L, cosMap)
  2300. }
  2301. let coefficients = signal.map(function () { return 0 })
  2302. return coefficients.map(function (_, ix) {
  2303. return scale * signal.reduce(function (prev, cur, index) {
  2304. return prev + (cur * cosMap[L][index + (ix * L)])
  2305. }, 0)
  2306. })
  2307. } ,
  2308. createMatrix (arr) {
  2309. const length = arr.length
  2310. const matrixWidth = Math.sqrt(length)
  2311. const matrix = []
  2312. for (let i = 0; i < matrixWidth; i++) {
  2313. const _temp = arr.slice(i * matrixWidth, i * matrixWidth + matrixWidth)
  2314. matrix.push(_temp)
  2315. }
  2316. return matrix
  2317. } ,
  2318. getMatrixRange (matrix, range = 1) {
  2319. const rangeMatrix = []
  2320. for (let i = 0; i < range; i++) {
  2321. for (let j = 0; j < range; j++) {
  2322. rangeMatrix.push(matrix[i][j])
  2323. }
  2324. }
  2325. return rangeMatrix
  2326. } ,
  2327. getPHashFingerprint (imgData) {
  2328. const dctData = this.dct(imgData.data)
  2329. const dctMatrix = this.createMatrix(dctData)
  2330. const rangeMatrix = this.getMatrixRange(dctMatrix, dctMatrix.length / 8)
  2331. const rangeAve = rangeMatrix.reduce((pre, cur) => pre + cur, 0) / rangeMatrix.length
  2332. return rangeMatrix.map(val => (val >= rangeAve ? 1 : 0)).join('')
  2333. } ,
  2334. takePhoto() {
  2335. const ctx = uni.createCameraContext();
  2336. ctx.takePhoto({
  2337. quality: 'high',
  2338. success: res => {
  2339. this.src = res.tempImagePath;
  2340. },
  2341. fail: err => {
  2342. console.log(err);
  2343. }
  2344. });
  2345. }
  2346. }
  2347. };
  2348. </script>
  2349. <style >
  2350. page{
  2351. background-color: #EAEEF1;
  2352. }
  2353. </style>
  2354. <style scope lang="scss">
  2355. .camera-wrap {
  2356. position: relative;
  2357. .camera {
  2358. width: 750rpx;
  2359. height: 916.67rpx;
  2360. }
  2361. .avatar {
  2362. opacity: 0.3;
  2363. position:absolute;
  2364. left:50%;
  2365. top:40rpx;
  2366. transform: translateX(-50%);
  2367. width:633rpx;
  2368. height:400rpx;
  2369. }
  2370. }
  2371. .canvas {
  2372. position:fixed;
  2373. top:9999999%;
  2374. left:9999999%; //canvas藏起来
  2375. width: 750rpx;
  2376. height: 916.67rpx;
  2377. }
  2378. .img {
  2379. display: block;
  2380. margin:0 auto;
  2381. width:633rpx;
  2382. height:400rpx;
  2383. }
  2384. </style>