From 10d9ff36ae90419c76ab5a670b63cef6781cb4da Mon Sep 17 00:00:00 2001 From: ChrisKong <609027949@qq.com> Date: Tue, 7 Jan 2020 15:29:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B5=8B=E8=AF=95=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加测试代码 --- 9.jpg | Bin 0 -> 11068 bytes src/pikaqiu.cpp | 103 +++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 9.jpg diff --git a/9.jpg b/9.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e858c61e0178e0cab6747e56f1ba26072223eb36 GIT binary patch literal 11068 zcmbWdXH*kk)IJ)d7mbMY-jyP~mncXVQ4x?DktQI$Lr6qKqzg!IA|N$HsnUf|1f+Km z0--laC?Sv#{`}r|t$V-R5BJ_ZYxbI1bLOn)nRCu=XD(+imjO2obq#a@WMlvU+0_BK zTmWbTu95vG|LJT02?hConv#NooPvsyit2w(YFZj9YFcV4DjIqkTDt$_>WYD$j^V$X z|2p~KSFcf$lT*@BQ&Imf(bBQ7vaxdri-_L2D<-d?sHCi-s{K$$S5M!-(Db>Pxy1`hD+fm> zXP4KmZhrm&fkD9`p^@*SK16?viA_oUoR*%EnU(#usJP@?X<2ziO>JF$L*vh;<}PG+ zPjBDv{(g13YKlp0K2*oQy(*lxg7 z9VL@8G2z!`EseOyv&)6@-}m$rwZ9z_>z}_e2^}5Z6G&m)^vQ*E)q1pkO9k>#k7iFb zwElcc*%%28R^cN1JM9}7gHWHZAKI6DT$Ae2I4|Jr`A%jizzP^mmGYyc3hdJIGgC}C zeqfwD(K|O5)@AZO6cHD|CNO&3mtyn*@c4F`=?S9c65xcG9Wlm-xbnuS2b3ZeD};Eo zZN4Pa`~1HCYuChdFF-LzYNUOjHvYp)1>z&7GqzQbZ?R`e)FauVrSp!79A zEYxDYgBs>M+bYLKpm0Mka5@QYTmsZ*LNLhXlj)+eHd31xx&AQX);zJS0yIa?leV{X z1Ctx7SRlb-?#drR6+FUa@wRfR*C>Cp9rO9SSF&LG7>Q^5)XF4H0F_sJK?PpZ?yG%U0ujw_YP@8>S+1)NUo=I8CQoQOPgsxhw4gLXKE&&wxF22;GxbTJt%S#yuPRTHx7S;Te_!Vs$QpjzWYArJG_k0Fy zR7OlX??=VyapB47Wt4~V683FU0sbapLlDP>Uq?VFE{Y&hs~Uy9wnF2!kNfe#fWRAJUnu=)IY))A5}ZfvoW7b*1Jd>p#v#=-TLBgz5Rg@h&R_ zW6)zojCE!WtH1BX#wpL#6tY;OWFY71q0&;1TvsT=#9W>^dd1-P{iMN&J@?{wbCNz3 zo;02aKlvJWNQM);7eNa51$-=sB<*huQW}me+ypp`SjM$eE-&f zf%)B5VqYKX43_3OJ8P}RE?s#Dqo!(^6i7?-dQ&9%SeIbf^cJn=^SopX?kN$Iz23;8 zVmdoxUA9p6sUjU@YB^Ks!cgwvM>G33C6fB6O6;lc?7Tu#qTRv$&uZPdi+|`7-%D*nn0`2|WnG%B0+2eb9shA&$CKn&5nrK$D%?OZ zl6dCa=ASAm#z?%srG0{U2l4=Z;2i(QX)6hxWAf}2dg-zY{>mdWR-aYx-%>xt%oh*o z=U4^7AxMH1UU#I2#|@q%iS%S#lqJUA9~s&$fO{KPX*lXiWw&zZtwr}rQSDr>G^%#Z z=CXf-?%C7QKKi6`u;<=?a@QdObI9CJXwRQIF6}!u0R+!`HEbo|WDQaLVEoz1Tp#yE z=*-9^;AS0M)q14f_3^v8#Qo9~vVE{lDj3bqcNh?(- z5Dq1+=Q< z?t(AS#prl>Bh;V9-vMk=@5UbSQU-f+mKW*wZl`$D2cW&F&Vjqdn>Urdz89Z>_QqcS`88tN)zde@ie#$0s7<2v%T4 z0R6IhboV9P(}?-$hW>>dm~{a<%EN{CDbr{#gedim7o1g`bUQXew!6kG>+q28bW zfz83u@)o&HYoY*)1Ra9*jsvfg{&}sD^=ltSU$%sW+QZ4jjAx6qUsGie=F}x2Qqdq+ z)VtHMdj)>0lBxlo-!@jXB2R?;?BbRWn2B=JUwLOqA`{jyoyJz}3-_5K9{m?<8=DrY zIi~&-x&mN1Z%VC1{p$Sb6_(li9#$$o!+LH569Goo<&0%#`-FR^)Y;VEC*83Sa^Y@5DDz^TOY-)ZUd0snl%C@=hL&gdTvx!d5T$w~~GHtNE zaj9vx6;sf6rm^fs=2NpFYCy}M&X1B796ITJ?UtU3%<*W-%8IXU7pHq2oBJM$lQF!9 zbn`SJnqbSBmjL<`PO15Yl_f-xe&RU5nSCo5;o}JzG}bUluY$co&4at4H#Fr&+v#?L zIQ;L|E|pZC@r5;r4=Nao>^^KsAGDrudKa8ooc>4OQEarur&|d7nGh*SC;ShRC1oZN70&;=^%Isn6WdHcsKVw>r03JG3N*$N$~IpPGK;JSbkGeT222VUcFLA2D$W_>f&c6IZ83|1d2nlNnNmP0hVQw7BO&*!-7w zro-It><#6-h_k;aRksX)yOR{!YW39Y_!$8a5fk3W2%|~R@@EV4W~&b5C4jw0{ivGe z^H~^3z{jp*rDwFANms$(gwgHQlNnmsx75(b;scieR~TOG09g?I#Aqdn+RY+pzBazt zTuYuEM<^!m;g3f!Rt>r$>Czjz{W9Hv`i5a%pT?0WsV~?Dv4Q}i~1CD0)LFgnl8@$!(1B}A{-wX?h zh1QIh0F`4zIQEgM7cQXZxXc!}`I31fuz?9IiYuFg4Akh|KmCzq5mIS9gB;$izZq@G+2MmUN^+1NlUbL`I0Vp#*pfD8;>=sv+8R(?D zYmfJ2uSVhWFTO%Wf_WcI$(uxKa<(*0R_${*H#N*Y?N3&aRt9$vAC4?H4ij4S9EEvCyAD1iF*zb zLHj2*Nz*^EpPqZJ7LG;sG-KD&)I?rFZeesfy7C0T*R9=@ZgnR+%cs2Zo;_9A0ArqB z7wCo2be1hzRV8rzv$>&m!o9nb!~p@tAwOxt%jQXE&La8~HETy;8PZ>+>3vMQpY-3c zyNk)E54MTBk0^@5KG;8=44*hEc%Ckv;BD9Yv3f#)`61wrWMmIC`x4M8K)SXo3vt5) zbt}8L?iD3utrH&5vtN%THg_CJLJYY21F0M-3p>?5=hOT`%q8JPOpt@?7ugbZ{VY3O z=zpTgQd1uso~=dpnrNw6AWUzfPu0~M0lSYq-8Ls+-%WZw#Bpyg@*rxfMp@IZ3ykT@ zdO3wgQgaE1^%zznGYY4MkHm`hWsu}C;OOU^zQ$$rN6eQ1zUMH^gO2%ctA<#rLV{Xw zEJ1Pnq33ar-`nbguVZzi2~vrD zzx#`0Ol?Ul(ic9mInlLrbEftB>Yz2ZGi!q%ACOi{I_wf4c0qrUS|7HX5M)&M;#zmg zJr~hZfhH9GF7Mvv3M{JcF*dP4^GwRi^5w_-WRIvEMxfD0<(B~aHuEmr;Sw5c(cfT@ za&u15TX}aoHsjfG-l^*M&-pxVz;awhFDMGijZa%96kOj`EFsO&mFCc{Ifjd`T^A?O z9JrK1%)@=WN}4Cq8m-kgLC*HSP4TNoh+q`6uU0KA2tI z4|np_B6%zwg=yE4E&;ZZ1#er~L|scJ(nIuncQYiYN4d}~h2}m9S?GzVJ0{tjJp2T4 zh;&Y;Ig=~K-K%{2fd9y2lXu7DRM*698zLGe60^EHNN?0}Z}FSjE5GqJ`W{?9J7y_1 z+c|l?XL0;5ASf)kA91g3Y;!W8zPa&p??P>hdiH={afU*@V!5)}=`#(%UXHOz`4{s@*?lAl(e?aF3)mbljFUOu}YvV%A4XuwX z!)xnVqzrIh*@92a@0)xg&!z{MU!4{GXsnM*61OU#hv;7d-i0qJy?sNv9gMQh-bHdi z7~WK^wJg#6;BGV+O?x%k}i3Ke|`Am4l!tghnVCKO=>tep+n@5Vf|K^-2-4e^03MQn5Tdjv zz{Q;flBK`c8^&7#9fbZ_;u?bpuXNz`jwPk`D!v$XM%iUx*drZzXVXSj|KoKcV%~*g|Z*FIkwv_WsjB1HG03# z&DZg=>X2(z7<@fZ$ja_H(hr<7T~$P2Tvnq$s0Z1r-D&7}Yv-YSrj+oD@G_h9QS%nQ z1-Wz=^Vv>dqW-=6^-!7<`VbroT~82OF9_AQ0{$~;AtLP<@qMh^FYzZ=!FY!`XgRK+ zkrTh$`3X9Bl|%*Hms-7Yu$a%|9Yc+zkldq1YG~R%daHae6CYoB6I~UGBHk`oX^bTa zZ;gbP_IpS+#Q9q;DN)?LqlYM(8M*{~Kb&`+znIFeyd5K1ca@J0z<%lro*>3y91z;^ zdhmy!CC&-S?0_i;SF4a4mM;P>bfDgNxvuQKPSm`hDdus9+(XKpzt*})o>wjTFhdNM zw(Muoj;m(qDAZ-k3rXX@q5qFR+qWz-WQqD1VT<`zP^$mH)!P?1+|??&Vzxw(PBuQh zig+zr@D3((494ZiW{o0y)1k+-s$NT~KL~Qw&H3{xMT)h+baj?qJ-5zjg$Vg?;&D$b zKp|Xo)83U{ad%h;x0HC?GqGX`>Nz>TKDKYPxuxCpwZWFFwXoTVPwn$Hg#Cuc#EQ)S z+bks24{ckFx@FhME8X{Grvvpi0b@xT(-30>FKw{>+eR}17n1`hbI`J8TE)DbVjjFP zcg$cz*I;+VWV+Qbv%;^Uyt>rC>~PF)FEp^cv~4)uA;IW2IFm7UrJl`7(MV&U)% zr(EZ@=pHMPHl8>hIMwIxl?ZmWk?pJX&tj~*+hg8%mp|4zNT?TR!)R-ng7g34@PME_ z2jxXQ{;C$%V*baCj1QZ=g&?+s#R%umMnQGixMnyp;^?I4dJQ^j4?AXpq0Jl3qKKg& zR+j0RQ-O`~{Xm{r7zA>i4a$!X0)##YF|SLG&%|d~FP< zlvLahtxMmlsxaWP04cQRPbbOlv=k>i*5-9vLtyf52kDKVxF_dZ8!2h%9$PbGOS`Yj zn#7{&8b8#r3K&`2^as5b6eZu>M3o_`L9cmPdBt|71D||J&c-5U2Y*fMTmpD=dh?|w zVv&-S@VXXXP3*Ow!^mw!v?c&k9f>&)uHP33nm~L@93Q9mpIz1u{6~@aD;6(~i^Bk~ z0_ZDK)A%oI87}ywsp-e~6Pr5k+z-xl3t;ksR+!iY1s;hN7{rC+4T4saINUHpuI`+g zd2jI4Q02aDaKTk{BZ|E4fNQ~zp?MQSaV?TfZBu#tDNpqEJNW`MW5x5U<^u)NOi(`y zvKoFg&NIW|vMUkf3fnNMc4?_S6xIvb!2(f-`>0!doS{pI1pcAbs2uk2d}Kk}gj0Fe z2{^-0g$C@KZBD&xKdS$@`Ci>;bFZAw*=LX1bRQh1qBpC&V0t9R9G-qxGx{G8d4QLc z>g0a5GlRUlVr+GIcsR}HDQWg7Y&J?Fq^s;8*FuH>DPR~{MbSb`$EqlTlqC3mrj_Vg zerBE*lu5av#I-qTv1zhrfK@}YA}@g8)D^@B`Gx7GI(OTE`aC6q-ay1#!Qb)BGI>4W zAtE11>JY;TqWg;12Rmu34sx4Aqs!RALE<`ac1i2&{omcI@4=7Lj_U6Y$Oh?6A$e(^ zM`fK~K=Honn;5>3$#x)hjK&gCj2jaX&|Qd<*t5pnUqt3n;NtmZJ|;(w+iG2tM)^zBD8_!YEwGFANQbFLkE`%LwMHnxqG=xb`w~F)saWt)OH1~WO$gkd z{WGEZZ)^q_1AH(4;9gwueL5?;NxrqosrxegMi^{1gxd1b9t4kc|r-QxW+L4{+*JHq|jB;9el=9 z4*&0+bP=*?pDNeil8=9D7tPMm-$D-18OUv-=1sakxt;%M2xPk5DD+P(xcULiV+e#Z zp71v~fU>z+{h|2TlxiGov*3+Ck|m02=Qjyd5?@bWrCnAHMd-E%_BC0*k2?FoW&38( z>qG`TGgjLg9|$N$>1yu12U9O&jt6fCu@*Xt z*w?LX65Tg|vpG0N%yb829uZx5bACGm?k2SsP5x9S`6$UD_jDHw4xU(Xi93;`^mx<% z4$XXR4!%%ERDCLzT=q{#%q#uEq_<;EjYNBjt;E%_W|tx->uSf}j9%1Q&1?ia2y!zg zzc`w}BE0b`SGxgUYq1$I_0d1EmWS#Bk}IIOhL2cVo8}*mH-5>SeTu!HY{8fn>3 zUrwP`=8Xy$#<=5N!4hD#9(_G1F3T4?nljkyb&WLXV*rmiQ*VkWHWjb&R+sye>Sn7j zx?n<2v)B87o&g=KJ8I_Q5v{__nf+;*KFRA>LA)U0S}?i6D9Et|NN26l+1A!*-O;#z zR^8ge{aE#$9DdT`mub1M!)vtLGk4RNix|kO?7nCZh+2R^kB>W(wW??TE!_nW&J=8g zzj01s7W7f+4>OAU%FfZ?L3S58Fjq;x&QRon&h43)@RH1=5h33@A#8pZryK1*F^IV2 zH_UaF2a2peIVqxZeWu&3WjnR)e{l#Nyynpp%#PBBfBCdR_qSe=1e2P> z6QDuF0BrPCwe8A2y~G@J4;e~b-#%^Rd~-11smoKGhEq7V$L!kJhUp$U9nw6fF&kmi z2%Gr~odI1_m&9`ZQaX3}C^1&7-(Q=|BqDM`T@ZRCYi;KWLlzI8~mfx8`(+)rkFfY)2MmG!NUm`cwIj>qX z6`0}m4V99U82af?@$~22l_Gg~`CRPa?nGoz(}`Wt3SxoDvZespY`7Kbu~>z|N>6Hz zUjka~5JeyiX(oN8cxx$qxNBd2Pi-=Y}c&r(40+a z|2E>`UsH)fFH?^xvU_blRTR4C)}7^S&hfHA7n&b;tj_I28S%O=mTVvUZTtpj9{OCk zUsdd!F9CB7xR3Y}v|3VRC@{9D@%u#SEfd~PWxpK7Db;*~g=W6vO;#+DpwbZ2$#x}I z7E>F%7jg#d*qZk|S-$%5CQk{2qt7l_M-TIG$h8z7y+SIYnSROpn(*{uY44h}Up%%) zC)AL!IcCnVM75@V2o?AbMl%_xQ#&1-BVFKc>N}uZi?Li>yc=_RF6ts)A6qjRpi0 zwXaqVuS?t?5LT+a-++20_NZt`IPAqOCDNGOsK?o<1^B{p`HF zAn<4CsCtU_Z|YmBkf9K%z9bs_CN2u!b_rlOUG}1D&-o@q2Ql=T?NOI0BU5vpWtQy9 zUz(Z-R_eS2F#l`yE}-Xcs2xofo(rkq)biCZi)|d*K8QVESnlhD(GlfpvwN534J?a!o zDO>AzBAqAh&J;M<9uS#x%%)2*9q(Itg>wx`+~#xb-bhYmF;0@5uqzy<iWy~;R98DOdM_^l z;*9y1fP~P}c#o3F1Yv}VUGMw&j)UdX0@Bs2AIF<^ z;pT@vz1uXb520UKznd?fvtyd4BOf|8^ktu&mmS}NbDZ(lPz}U*?dw%`FW&{A)JxuK z+;BuNVf*&Vv2tj;I*)*>?0P3()W9<6(fH4Y3telDk)4Q%GtC=Y$u>jW?NMYmG+jC5 zB5e9T5(S-B@YW`^A2>ZO93$ki1H5Zh`Ljm9K{g5Eq~U24T}gr`+M**jQi8D>(h490 zy=6YWnC{?-{%Ya_3r*jp^GmFcE1tL9k`~Nyx-m2~M;O|-^C1{QOs*zY5Ylhfbw*nK z=$iD%(8HHoNYnH-0|zmJ{$9vPJj76w4`1*i!*HleN42{q@^CGF<}Gx#fZ0|gQL|k)N@3n{V3X)v^cRO#bT{hF0U(`xUnc~ zzDn-Rmw!>Y3R{TAan?69HC`nd`1j#7fA6bRd;%*ejXmXm~NnTdL%7(qO86;>Fq*RVX|C9+)ifcr}Uz$4_G z?vhYZR^>JB6o-PsYVDPdNO>4%@C^@6(;8#LfftY_xFeZQ@{Fj;F4&s10J^rPsYC?+ z9OE@f)OHeBoV%szI7^pH5^49uyMNu`&`oAe{kSgkN;bBKS>^)WnvHLr&t2Da_~$G3 z{ke*jrY*h%Q`_B9;}Z8}+MhXnwd=^J&8XbZ>8^^6^fKS3;H}MLYolVw-=iqPO8fxlC=2jJFBwO|P zM$&<9C%hjx0>**IMwP*zM9>caE)#G_2?mI(#>{jl0d*?3=l4{jax2saGp*yZPbCF= zL&KY`wY|!tKKQcT+*G~<&>a+-?~CU{6_Xx@)gu-ZBxN_G_FwnjUK76ovpNK^MwH@{ z-ss-tpCkNoS<_Ue18ZQiE^7Lh=Tb(7HJojYOT ze>ah%*?%`7)>SYk*G7(SMHSlI#g3nf6NdU0?LucZE%u8Dk6xIpDq^mxDv<2}OQGHZ z$D!8We!Y6@wtd9g)VR~SnpUq!7!7>k$<%@4;l4R&EFP#3Yn-^nl~# z+AGmHT|y}fPuBP4M#xLqL21DOVm+Fsi(L=k4eEqW7$9JKzlwB+_-fp-z@mxa$AY%f z9eQHx%i|}M&|U}&MxKWO&-o?TL2sfcmgczo=p_XU{Z@G8;n6B8aTP=Aa1C-^S!XSa zqpW&g&b}QP&v609*fgfMGmLu*G$g8s{?PX4c&4w_%D_W56i)T5dhBp+FQsfO$AOF> z@lN1=R8q#xtq#Nd5xvA-N*OzYJHvsgxlFoS@PNBQQJs3~WtE}fM6m?sDj|o|4Z3r= z4T-Gs(%aW0_`T$zCz<|zhF)<**?e(Kz(#Z>qdJrKk{4f+VN>zK-<@>(y+R7$$S>-SMJ3hiL=l&0yn>c>} literal 0 HcmV?d00001 diff --git a/src/pikaqiu.cpp b/src/pikaqiu.cpp index 59349fc..631d3bc 100644 --- a/src/pikaqiu.cpp +++ b/src/pikaqiu.cpp @@ -2,7 +2,65 @@ #include "facenet.h" #include -int main() { +/** + * 图片缩小 + * @param src 输入图片 + * @return 返回图片 + */ +Mat RS(Mat &src) { + int w = src.cols; + int h = src.rows; + int wtemp, htemp; + Mat dst; + cout << w << "\t" << h << endl; + float threshold = 300.0; + if (h > threshold) { + wtemp = (int) (threshold / h * w); + htemp = threshold; + dst = Mat::zeros(htemp, wtemp, CV_8UC3); //我要转化为htemp*wtemp大小的 + resize(src, dst, dst.size()); + } + cout << wtemp << "\t" << htemp << endl; + cout << "-------------------" << endl; + return dst; +} + +/** + * 对比两个人的emb值,计算空间欧氏距离 + * @param lineArray0 第一个人的emb值 + * @param lineArray1 第二个人的emb值 + * @return + */ +float compare(vector &lineArray0, vector &lineArray1) { + mydataFmt sum = 0; + for (int i = 0; i < Num; ++i) { +// cout << lineArray0[i] << "===" << lineArray1[i] << endl; + mydataFmt sub = lineArray0[i] - lineArray1[i]; + mydataFmt square = pow(sub, 2); + sum += square; + } + mydataFmt result = sqrt(sum); + return result; +} + + +/** + * 执行单次单人的facenet网络 + * @param image 输入图片 + * @param vecRect 人脸框 + * @param n emb值 + */ +void test_facenet(Mat &image, vector &n) { + Mat fourthImage; + resize(image, fourthImage, Size(160, 160), 0, 0, cv::INTER_LINEAR); + facenet ggg; +// mydataFmt *o = new mydataFmt[Num]; +// vector n; +// vector> o; + ggg.run(fourthImage, n, 0); +} + +void test() { Mat image = imread("../1.jpg"); // Mat image = imread("../2.png"); Mat Image; @@ -19,6 +77,49 @@ int main() { waitKey(0); image.release(); +} + +/** + * 对比两张图两个人的emb + */ +void compareperson() { + Mat image0 = imread("../1.jpg"); + Mat image1 = imread("../9.jpg"); +// image0 = RS(image0); +// image1 = RS(image1); + + clock_t start; + start = clock(); + vector n0, n1; + + test_facenet(image0, n0); + test_facenet(image1, n1); + + + float result = compare(n0, n1); + cout << "-------------------" << endl; + cout << result << endl; + if (result < 0.45) + cout << "Probably the same person" << endl; + else + cout << "Probably not the same person" << endl; + + imshow("result0", image0); +// resizeWindow("result0", w0, h0); //创建一个固定值大小的窗口 + imwrite("../test_img/result0.jpg", image0); + imshow("result1", image1); + imwrite("../test_img/result1.jpg", image1); + start = clock() - start; + // cout<<"time is "<