From b394ffdffd1914a448a93389a803f56c85bcc824 Mon Sep 17 00:00:00 2001 From: NNNNAI <844294823@qq.com> Date: Sun, 20 Jun 2021 11:58:32 +0800 Subject: [PATCH] Updated Updated --- options/test_options.py | 8 ++- simswaplogo/simswaplogo.png | Bin 0 -> 21674 bytes test_one_image.py | 84 +++++++++++------------ util/add_watermark.py | 131 ++++++++++++++++++++++++++++++++++++ 4 files changed, 178 insertions(+), 45 deletions(-) create mode 100644 simswaplogo/simswaplogo.png create mode 100644 util/add_watermark.py diff --git a/options/test_options.py b/options/test_options.py index 0a4b4be..a3c768b 100644 --- a/options/test_options.py +++ b/options/test_options.py @@ -15,8 +15,10 @@ class TestOptions(BaseOptions): self.parser.add_argument("--engine", type=str, help="run serialized TRT engine") self.parser.add_argument("--onnx", type=str, help="run ONNX model via TRT") self.parser.add_argument("--Arc_path", type=str, default='models/BEST_checkpoint.tar', help="run ONNX model via TRT") - self.parser.add_argument("--pic_a_path", type=str, default='crop_224/gdg.jpg', help="people a") - self.parser.add_argument("--pic_b_path", type=str, default='crop_224/zrf.jpg', help="people b") - self.parser.add_argument("--output_path", type=str, default='output/', help="people b") + self.parser.add_argument("--pic_a_path", type=str, default='./crop_224/gdg.jpg', help="People who provide identity information") + self.parser.add_argument("--pic_b_path", type=str, default='./crop_224/zrf.jpg', help="People who provide information other than their identity") + self.parser.add_argument("--video_path", type=str, default='./demo_file/mutil_people_1080p.mp4', help="path for the video to swap") + self.parser.add_argument("--temp_path", type=str, default='./temp_results', help="path to save temporarily images") + self.parser.add_argument("--output_path", type=str, default='./output/', help="results path") self.isTrain = False diff --git a/simswaplogo/simswaplogo.png b/simswaplogo/simswaplogo.png new file mode 100644 index 0000000000000000000000000000000000000000..806d3ac9d6847a8445d50f9d57a5e7f98977aaa4 GIT binary patch literal 21674 zcmX_ocRbZ!{QotxDcL&-aS_Q18Kvw<_PB8=8P~i@9o7MdwTq}Fr z?7gyor|<9k`}IeU>$;uy`@YXPuh(;(BK37OXsOt#AP@-clgH`?5D1YAcr8gm4*q_V za;Fx&q4nySiKmHV8f@f*DV^AXS2iZ@jLU69vAN1s>C)g8_&Ep`uTd*`ksuZ*17oqG~;l6OUU zB_;02h)c+b-;sh!+>w{KCod((`@er~C{gj=cek^bH&B1{zZU~PDc*SL>4}gR7e^wI zVn``5S9b^TJ92Vz;u4bLl9EvH38;s!izmzn>f*uwZ;1aphC1BC*8LU2^OdU$@4qo& zFI>Gm6>r=S|927b|Gf(MdgA~8`+*<+{}Y0{fXCtvzJDgC%@zd03wffh^2{fFJpk!r z(NTY)P_Q}PEV5Cog&v-C>-uD+MoSq!jnkoLApQ~;o;G>c;E4cfJcM%cm%l4{m@{H4 z9$Hd6tT}l`$qwpHH*V?QZp%1d%ZH&@H=!2s00%$s_OLRyhO8X zv{I(`1^s1&9v20ls5sMC4F6-+=U>o8kZg^#(o5_m3>i0I@dJ_DZ)p+4CL&u>1UEo4 zl9Vo&+nKcS*S*iL#5}VvTyatB-A^$qAC*k}1Yee8K*4+m`YSQ7>uir}X{Co!U58Ac z`DgNyB~}6?wR; zIDJF#uW7J*p(3(SDg24HeAR*8@u82f{?hHtH+QhxN(}8!afwj1NDi}mKPz+77^h%b z$q6X2E((||+HpUH76oN(kq#Y;*9D}*~r(7u&O z51Zo(1S9+!oO1L-d`SIJo}2%X8yYa#cF|pl5izM=UMig}t@RYZHHHrP3>d@NH3#*F zu4)+%Hl#mOVQp7V{O&#bS@r;B`|r2ioZ3r zDki9J+4aqp6G&rYkv?se_dNy3)O5nYODZva+@u^`KKgA=z9(3WteOpK#)e$^<({mL zk7`82?s&=Bu2zZFg;tXpzx+5$!>oYGgXI0HQfoj*rKMxn7}8ZtP*hgC{NuG33)2UB z;_NtTrE5av3M;i2?|mIs-QSER(@^8|Va2al9sS1irMOV>n|FIH8jEm>`L{SAq>$eO z*(oqz7KllHrXu@!EO~iu4~vghL4c+4ASIebEmY)wh6IhP&bv@N^ z>a>5ohnUYKP{54tV8>A95us9a)aX@X$_g(*aaING#weUdH(VwxIHea8^S zsaaB%LipI5C>TsgxG+UXRIR5lrH$6i+b3y1XB%1%WLw#FM*Gv}I@2_~tn!3iqO>Ktxct*vwMfD>pPy>2?xnB+LBnoE8PehWl zb52(s>jn)A_sxE})i?Jx$Nqs1t>RkdNv@dS1!b$Oeinon@~)(AQ)HOB{PfApNdb@U zp>tiEwcJwdTz>x>OB`(&l00ttY%%QRTD$_$O(J!oo0Uu9i8fND7`t|o!nm`fWTU?3 zeU@;-z~R8TF`MRU$F6Bs&?uLSSvEYPEsA@;+3>D>*wmVO&&7q4zUnc^6YhQkqFDEvv)iP=Sd#TWbN-FH;0wgGDQO3>q`>W z3rtiTf2!BE-1f!AUR4zEs9D!{6`QV6eL`OyCBT=bRopu0tf|rwya`1381g zN;Z%*$uI}A1g}%+o|ui7_Fw+S!x0$jbB?T2XZyO1ipnKhr`olLV|yNW4h?P^k-FkP zmcxBo&2c&Qymjvx#!r6hB?NFZE028d3?@-*WDK68lsT_--%LUxD=v;=r3N;RNMAE6 znphwQd(FhiQB2wJ&*$SNU5OW%k+f4dP&%1Fn{QQQfX4!_B_ul}h!kKOxBSfd{Y`pf1 z4(!1>xJYBDL5Sa<#FuExZ>JLp7PxiKD=hX|Ns@kkjC_jP}YWGr2ZRq`obL znV0;rJiaN|5amCjw4)|4e97R1;*Yjy_7K&vv`UCVDrH3>C9xYkIvzf_KDyy7zeWYT zJ~;#3J&)f73S%DnHQE8Ms*vX-ZBL?_No@?oMvmWQM$KTi>9XLfyu8`@cPMOVomLWK zCdF+=G5M@v_|@B~XTFxY?Q>8OB-3!Uqt5>?OHri&QbLl-jQ z5)>6v=Ds`FxXRx4?(L%NeP~>Gac#ixnq=Y^O4WDpm(hav34?YssF}7v>j)BmDQD)x zz1I*L%O_1*I_EA7or=3if7)yQj4{Zv6ODT#7gA$y`hyk8J!{ue@6QPvhjaA*^%9#t zfPra+M@}EiKr_5IaUnnJ4b=_`Eart%{M;@(S(FOCT(SC{CTqVXju99t7b#cRX+9*- z-)&I)Q1Gn3$+u4Lov9(nvvHJl?>TfC6a`o|Bl`I1o+D6Ac|*-#?8#pN z0Akr*N&4eClW9KP`tSAKEtR*5sN;u$&sw+XDrQAf1!YORN@p!R@4g!67~ZRR)eDM; z+_#1E2@c)!kw%C>+18AV^^=23?!);-B0C~GoBp!1Pk&U1oD2-kTXgr!Pld6O5G?0o zp&r-l>kxx;jx9l&D|$XZmxz8OdM>J=lOc{F5}YP&M)%zH=oBhdliSwP`}D{}GLVN8K1RCuv$WEU*(P_Ce@**!dK8{oE=Ut* z(zP4J=3X@+>Gk;HC%HrR$>Z`NMV~~t5DB^{gyEKQJ~@OzB0HaMC~nUzSakiUsO`^F zQV6wXZ2`aeWuwDX!jL-hrQg9>NyLM)?;*Y7dQqD`mjXljZIRshju*q?niuayj&9l0 zclJhZR_PC|(0f+|p4lPmcG8RMlLJ130b=dR%>(JOSr2vDJ96>{GQ>5X&|-QKF##v? ztfFcz1gGbqlDXT}Q)I^>ppRo`mxPxQ1S6O`TP zEwo!@db{dS3h?JwmIdy)r{DGAY-Uvc#jjUfvd*5wK;lkiTJDbOOHJH@Hn_1uP-Zii zPQ^hB*HkGA;n{EgEb%O;ADvB|&V;3)z@B_vg~Wz6#IKfp3Ru}<4B)8RDNni#FB@IK z%38gPU$s;%dV6*4xR8~$MtfK?aovU4?8T+6@;i9plV~;L@1U5kZ6&;6($(w1E9h9R z=p2@xLbtY6k{P$d)0Frd-p3Z>dn+-E;#mP{sWH6cjhmEO#(pZo6tD-vZ{ck6N@dXs zCVReU#x@Dg^tMzfBA=LhI=O=P&3BD6hHK~QacZ;$=PJ9#uu4Livc6%z|5e%-(F;XO z^Sx%?LVddiFTWjq0dsj1Y+49|`_~wxHk7)(G8<34wf($xge&&v#F`C)T+rH)josw= zH&MeY;>WX;(pGl|ypPD2wx#c+Q^*a}bm|+3+-dWwmjRW#L~ek@5O)Y!22Ebk(NvxW zN{xIv#fHHm9r;coIVaB==anDx!cq@Q*PA1OW#^VM*{>gmy z#WzCmKK!a+0}HovL+EfVLny7hiDUVB+P=J`+X;=UQyKp0H$6 zFa0k!%z4Q85I#8ZVZsl2X@zeo1kP+U(ezwNctBOgF9k31*M060tNC`h6K3;MB3TRS z^rDtMC0fO|1`ju9xth(acBM^FC_sxMSPKwHUIsv{9(pCe9*5OMt=Uud&5~&rUmD3x zpWnen&T?9TPHSaVc+pAh$j*ktf1ASFDG0bYvW>ix8UA!{wwboyYFRkLFLkk^pnn!Z%!PGRf8iC_d@Q@8n|71aRcxar<897~W^72esg4HD2sGDbXn?2oha(~{ zx$%5>M4H?HSE~tYZBE{UZf<&A3KE>8jp^@j%l`n;0szM$`!`pim5(@tf1vsgOZqHI zOmI#t#qawv9T!tk8Utz%-CH+|hqo%d|BBA>Hp|bsD#7pQVy|6psX^8EptnB0g*Y;^ zhF-w``Q_9c^sSWa%734qF!IrKDUe73*vaD&ktVkEP#mxQtxI1@acopc>Q;A8vq0sj z#x#Sk{wK5V=Dm-M{c-u0L=erYAYrV6P0DTAh}v`lC!>8S_^QLDv#R!m2W2KpT}P~r z@@hq75fzw0qi4pIa!|m*Df@Ww+Slt%Ml~u&k!{f@oAW18WXQVqUsbaiDt~Xs)YC!0 ziin^TX~laWA~?ivg%^oD%d!oAsH51FR!rKe%bf?&(X+Wg1}#qrGU?n^Juo| zT~q6XH%Zd@VqpYMB?ysWaztTXfpd9puta*WUdlIGNcnsNP6v8LV7Spt_dr}4PczwZ zutc)W1x@8_e$QA0ugXU|1C-un;P~R^4N2Dr95RW|F5L~2&21X9V;o%^K9}h!URa5h_@DPzoTdcXf?}df_qci&>E&~WRPvNZX@~k+OBZE z2DPqTI-W(l{@aHA&JWs#Z_CD%+}!?0^;pz@?R;xCr99L^!#5rlHh;mu-EQ zp$wlK$!TTe`5}PXpHX6|ei3fo7ckUC`ru-gpGHfhFN-Vxp#v1VkS*#fG@c0Z z3is<;cqN340!uYU$lWi3h{#4w&2{coV-?~7u{T3CNGg1@jZ(l%WFY^>D42Qf^tC?2 z=|dq;(2N=AqA)@p#ECwhl1%8;_?*tlL@qq+Kle@vZZ^* z2o)ABQ5+6afu;P_LA#?66k6rGc+U#(dm{+1;OUGYX(bIU25a0AnOW4j+4-a$k(dg& z$txTl(*9uA=s#5=?annz8^$yY2&DMJc@Z1URZ2W4MkN`kQNFYoMnagibL4>8bjz1B&czGEt z9vVu7NH2+%H>MH z+SlEyWLy(PO%lr$@Q8Y>Im)8+v$5`BAhC^kE^?}cIBBn$7y{NgJ%=WHeoi}EVG6kW zH~IPjvCMc$_tR}51`~7+j5zI6YD}r8&rfEeU^Lh7m#eoSR4B$a%5p~=WTy@^fklyk z&T*DLuxNo7BHpg*F-&z7a%wwqKoy}1lD78c7p%bToS0udf6>32M z@{91}7R1Jf5+KRZ>xI-@-?w%Pjo!N#U-I`@*NrAi{|Su(7*g6JiA@Z4c+;E!#(y7z0%b}z@jJC&aM>c#<m<>s2@Yd2AK0=n|Q??Ib#fR_o$tJ;YOB zyfz$0R+&zcb7FW2IW1Iry2$lc!&iE0>dLhTRz@#Yg@TE~B}&yEC1^OdP8M}R z$9E%pE#5;{tDM38yE&Xu5i-Y6XoXO4O76x|S$9k-OwI|<0iO8XqI5wn_)uSsV_qF8 zY~%ksSR(s6ujp2A0RHk>p{7Zj=^~x9#itKmFZr*rl0e+6j>0TT`RD0|`)Bh$e-<0? z*nx^}c@hczq}%Wrm$dt2#tiP+p;7H%MpR$Mc6Ymnu12Yga+4RL#Ioiygoo=JM$C#9 zFR33T?l8>KNn0&#C-QQ=x}Zobe-EmkoM0W!@?p)WP|*d_<7-TwsCcNy-&v6~w<({K zZtPr%Y#2eHyC*XVBLDQk=PxBMcga9+IkCV@X+Qkl9Q~1YKz~S~YG9*+>@{-$HDr*) zoI4*MT0{UBvgme?8GoA#dsa!-t*8PpHX+QplT5AGld=6hBpsatFNFW0;N!QNO@uVw zaS@nmc}9ijq=rOJ*93h=18uU^$U>&x^TfAemVyW8taxu~kM%W&p!AqV73Ce#_H8i~ z0R|c>JQWfTm`jjY>YMg{2=DaQd2W3Y6dKi72a72w-0VCnV_Z3UU_<6GW-Yzdh)Pw( zye42P!&HCksByg@OLI#@vG*6~+n89j7rb**I3He;zfb6bvl8%SzkqmxX3(NKx~LAinUB zBKRDoUQ;yet?5FZ^{#O`Tu8XPXL@*yiD1eAn!+f8PJHkqIvJ`qg_U_zc#hqQ+SCu5 zrO8A`A)9#x{bjDA!e(!K|6BXa?@{_d=t<`lDhj^r#9a4Hrb};7 zuofOOf_Cb>Igg@-q{mDErj*I>QiiCT&ouHePBk0tC#pWt zn5C4_Eiv^m#9iHYR{Diy33p>eA69ko+l0wGkz9;Xp@q!k5 zTshVJ=-fqdE}sKJozhlT0eOk-?tI1Oc$a0%N7$tCuM6Zcty5s!9H~hImEOvJ2?QUV ztp1yt@ZuW?pYMFc)R2shHlDL?=6?pfrdHmK}0~d&{T^@j6sfi5YS3yh3 zjDi=zAM6_AoePst?hO^oV0{xs;%-YI`Xhd z229x|nt1r}e);(WAnDMVn;Ae_2a|-bRM%`c1cjxE8Vrr*e-s3}DUb{=DPZ8;bXz`Y z1|?+v&ZT%sfP>D-1`fqi;+{HTB)sw*3Y}MuaQW8T8Ysq9$$^ca)tSGOu|5OTsJU$W z&%j1Ho?rDfKB6km<>chKP_coA+OlEUT~5X#kKJuj>% z|1t4YMM=Ep)7*Aq-%yeri;W<)t?X4&(s7ehjmo#c;;$gB_U~ON&{eu9!F{t>H{RJa zLLQc$_y30&N~yR~5^Gu7ARljBw3`E6;b{Xai4w;u4ePSd-TP~e@mDrg#;TuE?XV2I;|+DTsGzq$VnX#>=L;P`OHG14CrJEn1E)lTP%rS-Q*@> z$XLg+kIn4+XnCC^GXQCee8|F;7HyqJK%l<5?)3IFToJcZZmbRUFB8H06veZTshTLg z^6!qmP&9C46J4S} zcy{t|B?NjY1f0A^JRTTuZq7jNt$@s*x(4VW=vt>Y;lXmcH z*D;g~o5%%IsZgosa_V(Q8%SaSh{4<}x{be(q6;1Rlb`leFHLV*wDlD1#b4gF)Ww)n zq;>|kkEK$;9wJ}%%^o6ys3Gw!yPmq9{48sa^R9fyNV+FA$10?txvZvZb_YZRp$$83 z?UgS8Z!{-2pO&}M^}HWahzzLZU zflGx;z?rJW>wD4i8~9EPmIU2jGEPVLLc{Hb!enY+r^1Mham>DA+y^gAnLRn<#d|rX zi(Ol8PUi`9k!o^6Hkz!B4FZz|YWZGs4xF27kA!4-VtZW}*eNb$$}1!46A?k>9~l+t zJxl+drp609D9=GNo|h2jv+?RrhEimF+I3jeQ>`1#dTE;OWHvt{0X)cL*Eln7*_2jb zp!$cg`~tCK3gWLwjM~<32wj`LsnuagW_k!1cH%x0W<=Q@X4nUbK)SyTEQW*>pN`-v-nI zO9=hTZEgB{%FKnCmt1;1-&}#}ckw9-3H4&qQ~D@zA29NYcV42(g8&jxJm)!uLSA?m z9wcKHvsP{wH$u>nK1V;hglnF|>(3_?!ufuyI?I@d3tvSVl^1!df)VZLYf9rp&tc(bZRh z3j)%N&de4a2}Ba!+~Xu+bLv@W?n#K|gd1cf%IuL7VqyYGUH*#+NH zZbFSyxZjrgP(~|6Q}@Z?P_vHsnYxa~1?g#qoCKXKYIFFqyh8R5H3x@o)931darj_mqsY*nVFufpTeW&&sV?%#$lkgl#E~uuXjqv&hkE|&R9r|*7lBc=b z)RPw0-#cx|QehJpOrTXt)rk7w?5(n*yv`Uu$E9;Mzn5Zt4qCV+S!1rQN~jB%tu{l+ zja&;1b;|OgjKuqSYCvB5K|QcYi*Y)(m9HYekcD&VhW)^_!3a$s_lOHi*Rq6u=O=rP zFuFc0)?6F3r)5nPocp_@#hq#R1!6*B&G0;pJGA#`uvLXvcF}H&aU%Jw++*;oj9BuU zq?K}`%T)NwaeDtz<)K-Ttb--}1vZ&GG!A+QI*>mwLlswr8r~GWf?}fjD3-MB zzS~ru6npP&THl)-pWP=>H?0Yi>PM@m|3rKkk1;)*R2sH6LI2!14oJ$Eq05J-8s&=m zFk13^Qu;*C!r65LfYdN|t?9M@iA;;nm74$PVg5rjFNhn4L71dp6y!*H8WLQ5Yh4#S zl%IeStWq2_WbD4vx1?E+zV}W6Z&D2Q2$VYKWT+fao&G4NfDK0huJHo)9`)>-r|3|# zDk*&rQ?T3Kp+C3)A}t(i?EseFp8D@82KGTmrZg-?)cW}$azuW;oljX zt}FlG&1WE@^d_1iSag*7=7i7F^z=K!|@%!Goy^vdsC_y|T52z_^Xc=V* z{JtP-$BC|IMMFQMW1R(poTcE3`Nh@88iD_5HB&_t++3!U3FPA%KiO0L<^4tC)!adE zQ3$l+-;-IbNJYBV?flpOqtUp7{5$5va%{6rA>o|sTU|&_zVWxf?bBefE`JWaOYgK= z&yyoaVNWxy46^+1>9IRT1jHC%FXdjkbLKQ8h?iR-oNH%kxRW^RZHaJ^M2!Y-<9`s{ z3tf&8m`Qv?=-Q#1S+~1Hoi3^yOJTKad<8?Lsa>)jUjiH<5&*A`(b4#BH$RnipDGQu zJae>0!OcR3jb1X8ZirawE%&pbX&V@Fst9J^5*Dk= z7ukMuGlIXjrhgH9qDtzfy{WYi16nJIDPX+EBC%a6gHYgqCQQzC9*@tRa|j$g0x^s| zyyX1FPr0LI_ZMoQMEmL@LgzTQV{Y(vfufM+PW~E=^oRdu zzsuNg+@}{lGtK8V9t`6FX@zM@NXqi}F4O5(OX8F~8D|0uM1pmif;^W@QcSM`l>zQJ z2A63m%naJF1a92N%$m!3_UzYRUk5-~Esavuw@w`L_nmzXN13Wywub=!aOMlAT-Dr7 z+N`;J_3j(y;`-KhD9cn_LKDN(-0T-ySHDq1$%9Pn;TJLpR;vTBB}x35*!O-?JYn&> z1!j$a7-9<|3N|_2-C}HiU~Gs;)>fFB6XB_Ts6-z$jNxHGJp?5ki>GN2&2_5#JmkVL z&C0sxM3g@ypLKUApozznQZF8n7!NE`1Cg#~{N?MLEL#?#Bx6qwBkX1xTHbAL--Wy= zc3qgEk)|EepQRb$T-Ziu7*m|ku~4wy(yy7_tTN5A<^p{Wy?lu56HmJsrw8ee^NouS z{Y^7q@mCkY%R``FZX#Qdc)|~Z^R&&$!@i1`1%XR^=g=lQ8swUYA9prBxBOkRI&e8S z{B30$t-`Z&zex7a{N-?>^yRt+!6Z<>OB&URaLVK(VD${Ta(+-8bj-cHO+`B0;r z5a|+>%s6So${Yf8=q}l7`o3BPGmFp+B?0M5fz;KR{j_4O|f z^JIXfUI47k9dd!;`T6qurjf#%8lUEP8~I%t|KSuj6=?8p;X+Trif^Qa4y8tUVcK`S zC82tCEAy(qWat>yHO^D72-e-sXnVqPQnGZOm~fxkb^{mqh_%lgEb3=e&$wn97Hg3Y z&66!i%}t(G@=QyhAL?l<*5(F`li0oNx}rDAebgbSncC+^2}#7as%3~=OeZdzRzKQL z3^ky3y!C#tXz9&A^{Cc1$YmDMASjhS3-^tfk-Tn_@AvD*)qJrd2b5WsXu0xnGK2xB zv4Yv;G}0s>Jt6B*`RC;8f$qB&_vxubv&Z|T7c%RP2d12@G8tz1RGPHU5oky-+|hgg zCae{qn(4-Je|<{wTg}w#i`pXOMuO|cJSCF$X6-kgpG2Kd3=74A`jykN?UtG;v{RSKX8(AXJt#FVz3=BE~O~6&n|6c8X|MG#RL;@XWYj!exBw!y)dAs8&Bw+T(_$-UMFPAJo zb>j%F-8gNmv=&8TZq;0{fmKfa*)y%&_I+V}jvb@W*=gF~` zU|`s8yenVcNX+BCwLS8CEuPAPejrYZpOnzdPe0Hxe!7wT$c2j}jPF09<+M6jJX08r zVEf(cLz4Synr;IlN1L;pneLz(l_Wj8^e+l2>qpQv-nGegY}=?@BaNW~9!IU8R>3F; zEO`QckrkqND>7_KtthWL{Ta>r`^=l+WVVcMCagyk25Qb){Z5z57g=}GNxTH#oVz}( ziK6DPd`tnD-wA%P!}^#Wr!dfb*4A~Uwkd$ksYmOrCEeOPqmu!`k2PnW3sZn_{2MpF zm|KY#D_-zHK(!1S_&UGUB~sK}xC{+Tmi0!eMpy`Ss zF4DA?RgR;pJ*QvqjeF}XE}vZ~xoP_y%@J6Ba6WVFzEgfcTQGh6wbt`D62c4Qp%MTy z>XQC}2iPi=>Ia826zupF>jd@OQC=)D+4h3H?451|-KU0l$jd)*o=;P?4xCR63pW$3 ziM@?{6s{{>0TcTQ$S5otL*g*m9&70%|9n3Ffu>dK%9J6#(}F~H8u1e%(6v8hjG;ma z55?Crjw^4a{-mjyZn9n36912`RyfH+tfkIzGfBauO>UF)p)W<>?0PDh3{7JH-$|CL zuXMIu5kV&|K)(pO69@yB*9B*E)u>QyS4G-Ga8Yp4!K@f4IW_3nN>f;}s z+yYWfM+gWZNs$awZz_5wT+z7IaL%TS@FS`NCW?%X4hmk(pqN)JH_)UpqG0Sc^>%Z< zb7g$)o|nw$#loo@I+mNpgCw}nnyyQRO6;thRcO)DEHuSifbT!04$kzD)jdkADhRoS za}AipeKFY7A3DfSRk24*tg#lz14W_W3%>}E4L3?d!l1EtFn8lyzN{ETOX+M1Ra!5s zKj!5CVU$#-(uEyQyS4uKrZv|O$TG~mfufS93m!yGPs>CLO8b?V$C{ljb)m1 zuFC~=-}zJ+co!HFZ^xU~GXLrvoV^aR0x=ydBn~h)zA8e}gj^fI1*)DAmcF>Hmnsz4 zO-oDS#83&*h>xV&3uHKj_oll48AtILo&PjhdVk3$szp3Z9at(-1ns$?rAOqlpo{qR zr7zPUx9NsaE$)4_AOM+TxAnUhsKP8Zv6ne(z6OT2^%=*S@ubli6+h5*c>}+cp8`(Q z5yM2U^T8>=xvch$J$xfKZM5-wDd&}As?y5-A|IrZA>g>u%tG=HjzQiXy65;e}4rLq2+J#hY8A|`kjhX-EwXoDJUgkaW1=EqLYiW$no#fn7;PwO;k zH7mB71@?oywHVg@ z2E{mb+W|M>y)zm43kRTiI|4vKo=nAJ+Zo`0C!3+6>O6~6d_|Y%%bGeu7Q+-D-kTGy} z*=i8v@%&o?yiXr~$feJ3D!gdJN95mMEj!1?fQPyB)%-VHDd@sO6&IDSpN$@v{Jvh% zXHi;RfAPb$)WP@F?cg5|_STYtW}MATD%|Z05>JW)&HENk)c}~>hr}74Ynkej<^@Yh ztUQZ$`t`5Pfv^oFXmu%V86V?q#WKt6b6p~paf|EY9WJEAIB@>VJtWfE$i#B7WQ~%7tSG7Pdv-XT& zFZW{7X#f!-|N4@`L+bL}-y#+dYmEJXxb53+*t`tQ*wG0hO!|i=#GGab-aoiEZTf6o zB<&cE!+!=qOi;FsOjG#2z>ruMi~&J`i#oNFP?T6EQd&@LyIlyp*Ptzvldivu3oU0= zfL4Q~KSpMxeqI51tx=}aE7#LiDi$m5Ls`~XjW(WWeyk{}>q`D%|A#R*jqqjLCE6S- zbVULo2>C#a%ZEW!e!SgNmx2t(= z&aOeCg8tTTd!00DW((oBX+-{bO;Tz?&FBAcSw*X~SP7Y+MznRf06ch8PQ`7Tm}o$f zX5~pHIOWLZsIX3PpZoJNgtPDU#?x46;eB=rF&P$ z(SBQPebqdN|8H2!C;Y)Vyn28^Z7i5KDh8hsikhv3+I8EDin*nvlWTb2b)2 z%qn2oX1Y$J-GJARN3h5w{=NOjLh}I#yhEw)_KzNRv21Y4c$40N?F!JUurg;37O@DP z%3R1wSFZ4Zyx?om328*gvapDQ(6;SlQnI%IZuS zx0CNUKB*U|RvI9u-%O**3zD5c{d_dcjNJ`=wc<|;A%n?sAKu_OnytiKzZKppIZU(8 zKT|lt?qcp|yz*@?lglySvK$1}l)EF^srz2slU=E6{9LxRVd$2M{OkA+cRd^Wh;dPP zPht{vbVXA~n#akOtr!$X$+j^8Ka7UFN_K(gZvrYlG=15MF3m0axGAcwckA?D{@wkO<*a`RC~UTlQ|1 zeskismRXZY>|<|&5QFm-fK^y`+_BcAbvj{!bg&iHKQNB>m43oZ_RF;~YE2yMDDSRD z<9l5S%D$;g>ADP(?z;lM((Rj!{#%zrQ$gS~86-SDzuE=lDk^?<{^m(woDu=O@nJaA zEU?Hiv(ae;u2XaWaM+P;mWU{oRkg%G^MM|6-SFpiPAqu zJZ~*m@Ohm7kkx+XGi_e5rH=oLYck?V`uZj)bO)=KmwWD#B~;;CvE8cNWi+rdtASb4 zB9!8{xph~L&YG|uH5AsH3^r>)<%Ig4asOrW^+FXp9B!*HWjSq3iI#Xqa3A zVNYLR3pqQ=SG8MCBIIjm>fYb7zIiO7M-Wi1`Wj<*t05pO+-^a|(Pk*@U*M;+L8)E@ z@WKA(sub($LdqU%Q(*In0p}2eJt%~Gtek%Y`A=TE*hEC6xd6+cDhRvaUc41#N9FUf2~LHOI;OQ1#?oXEVn zwcUn?{{_Wvr6Tpn14RIFyHWG}=W)4|@wIQh3gTszrSPeJbTt7KjrnEw2EX6g?Ww?p z1?&!dSMWIMl1I<;7t|I;PA>{EPz*6v+ z5;dIZ7eC1|5eqA*)R6d9^DE{ZGBDR`KpJ4TqT&VKD*HO*8%d2XZ`d@^Xeqq#sa zC;$N&ke2|`yFEu>C9nHv7FbbcJLc{$sZgwCpSrt5Uq4}@SGVPB1wJzEbMX^CES11p z$3!!~R0Bsy9OUQX)CrBiRMgXEpZ4AICMctKkC-m&$H^`-Rn{0nUL|}rJ0E={#8!R% z>eR)wbFRYOsX1Xe5wJ>3ybHb9#E-K@gs%^0BChahXJE~}F%|Bcaw*H+HyeyE#hn5c z3$KlA(GB6NXt0eCS#33tc+4asqQHTaDgSfqN5)B*@zW_&cMOg_GSjwlYYZG3>+^3q z`xMn|q_pQD^N+ksVRsV_M>Erx0|Z%K$2LT9*aHds1}7?V6Po6hP+;db-QUd15e8o| zZAT0~j-tVCOVn7j<0Y?Z$GL%syp^5`kr^t zJ7jrXGNT0y92L_9N4c!L>ozQ{s9NtnGs!11>{r!2{Ns_M-7V3B$Q=cC&hsbqytXW8 z^wU|33!uOsQE&e8gg8~XVoCDRAw?o_Zk#Tu_8B0r4Y-)ZqlqN@?ndST_zc z?*|C7B@n$TU@3lzPFAfH`F7-Yu? zG>+WB%7xM_Q9Q-57Tr{Co}A9lT*HAdT~*!OT?L^6e}W#QRq`1FTI0C1U)lWbO5GJ! zw8p=bq_(9Mo&R9$v5%IH+IJaA(!wG^sG%0o_lFrwUwG-N`EJrjRGd8+)H z;(bR%n7yVj|FK9P_pz%=XC(Y#Z4u!Hq?K|LY^-bo%1k(KN~rZuHZJlxvfG>bnZY^F z_?zHh1I82p=CFORrwp$+AfiK$0goSza*VyCvsr7}(`(zMdpSNA2o9mXTHK|)!;f@3 zXGwop(+5%=&%v9-S9G@&T!dCan9xOC02~Ir99zu-=`9v~?l!uwj-Bi$`{q+&R|tfW z_}~8v@EC-aHriViRGhC+5%EUU#2sC}-qQTMSXaDvgf?sN%gW4T`(Xd^(V$7AfH*NV zHOD%|5-TIgR}ap2ls9c2yOXwwqDZ>pND&f$8HhP2uFzclLC(QZ-N8DJjt;AI+Nc^C zcxiw4bj07-%gA^b7rR>Z$QCN4sJMuTX;Du7yxMTEI_!Tmg`8=c$%8zoPo?=`9$;T7 zM}NP}W#^#WnE+WN9(c>Ks86C<|8d8_#YY^&&=M6W)cyrQ_~Jtqp1iuj^s{W$R!aES zs?1P!)4F?!7T=3y$1Q)- zZ3b~>`hO`-5aHv@xMNDDeN~0l*eionibxz*^Jj@{e6nr_&KVdySmbB-KfiE zR(immKDScN<|L(@{fOD=M)>#7%r%fvleI?16$saX5YCKaxX%UGDQEIy$G%^`$frhG<077qotd+{2)JiWa#*FU%ko5415ihRQytI_`Z|R z-?w_QcV}1I6}Nw&?eh2bQm(A<#TuFZZASWZDVXSZ6J_#h)Y$s6&HSLOC5Reb_|{s; zi#A{S0f6vQZe*(#Z@W2|Sh~c>oVE(%C!Rqy=NIRIp6dM#VT#JQy1p>p^$V*wsdF`o zqE}SmFlv-;J{9Fs_Lz|!*jC@M>5Bl68QlK>ArwLglsq>{7ISY_m$CzDWI>Y2+7)wsSiEh+orKU>W^mu9wRqb*qYKw>Dok{jGlTmc zhd0qLy2T?*3Q;ao;W}q4I^lv)31kjD)Lag>5Xybm)SOG8O>{s1S*`@*;l>sJWERGE zW`_y!O^9==96<(J@vLcPl9CtT<7(7`7z>G{J0 z4~Cmows*euQ%AJA_AQlbrNTt_PXe)4sL|${yGvZ#%u*&ni?{ie+vl{v#al1GE8Vy2 zUI2)?brsKvW`-2WG~J{aa4`Sg4G|9wL0jjzCE^?-;a4zY_?VGx6OQC zUE7Ac03bhh?1z-Au#5~s$z>Y@v6eacx+#|Flo*aMi+cO;8zll zzlIZGwve^Dm5Ie0zczT_@f+bCQf;M7!g$xS-xN;yMRd5iBS5GG z%3md#$^ZneYlADndUz2T^BP$ah_$?p$r_52Cw~UuWH7P#{mcLC^Fv$-Ej<40mp_{6 z-}84kQ`u(p9PJUg;aBcB@$5bCw2I@UrPqA?KN>o(dkO&ZBd>g02nSlc-9Klk+3rEO zPQlAQY`Yd7pG?*L)V${AUs-x;I5W8a-(oG7eWk8_06X%@%# zDWT*FE!Orft*)Kulif$H;^fZC<#}OCH1ne`*=D{c)^gd07*`g^T0Kg+;ghyiI5Jn+ zvR1b|ob3FYvYCUP?)w8g_PcqpwtW=FyM7vK=)4XwqOqV zAe1X{!lc*gC?P;82W4{AUV#}s9{_|?&Vev!v9_uew;W8YXubTl!^4Mvd52jT`(68$ zf7=yGc7_HIJoadDqWeL36J|zMCzS%pisC-ots=ZMS1PG7R5`i15^fj5t=vs&!nrWn zyYp_sBpymGyPZ(pAZrPfazkczX#Y>)S)Fs5(1b9Fav7A%QNT;oAcR0TWpE|jz~tZp z%ro_Auzu;g^;9o%BS-!xv1sFeE!ni?q15SJhr70aZG%-z{Scm;Z4{MarsqSslzZ~j z@9%FLKJ?`CO{;FYVbN6|94?n~G&^+gL@3$$b^x8I;UXklTerX zv)*e`X!v|6PIUi*D-pyNuK%16Zmu}d^$1rYu=F%S4a?r3#oKScxRi5)aWz4ijOp%N zFRDZaor7^X6L>!E%HR$rIyOfZthtXceo>~oS3xMPYk%XvG%kPJZ~OQD`0d4s?iZF_ zd#4?4TCuqI#qVy-4D9;@!!mZ~4#UvbR1&xq?jpo`;3&_ytwxq*MvzvbTyWQ2=mka}x0Q8JHY| z9Ei1I9xZNJi!W1x^((C6WWM$C_ik-m`RBLy?0n$<;a7g~7I?~p!8>T0>Es?CKe_$d zt{q?hj2dcaT6)dLo+p$waU}#b-1Np;w%v7Y!?8`9G6{)A8^10EVmDm;t}{?0O&b=j zyX9rqHhBM@huh+9Z@7QyH6Qy{Zurn-->!#lac%Pjc<+6|1#7m@Q+?YQSCw$%%5_Gj z-_a*e{SNc!6ZVlGJ+hT@S=6QQm!gS z!`Z^pQwPlauFNtK#MW zAe?g1wM`Jp(6sW#e@-lV<429m!0$`>k?m%2Vy|svkK2|$BwRaBm=xu5u#qd_c3G=i zD+l723W&gX*Y?kblFQ!R{FYC?znJQ^`kuS@6IOBJQFx2PIA*cBGCA1h`Jsg$g)wE& zxZs|JIcreHRVff%;o6p0vypPO8ad}eW?+_2ur4$k#4=Y<++zMd%|gd3NK^>m+f;+cEiZ(GGD z;AM!WQKiq-NcZ1!V*9<@7Oeh@CnAlj+JtbSMw>U4@*`Vo)pp_723)sfn}txQq4UyE zL+4XQW?-n49eTP{7=5v%6h7M z@tZy}pvBq}1A8BNcCu&Zr{FDC4m_iz#t>F1H~ey_;gXijz@C?FtGEw;B-X_I*zw1M ziKVNI+;GV(j2*@tL-yir8$QqE5QJ;{A;GU)^rjj?Pxoz4EWY~2K&<5!BQx+=e)Q-s zqs?n?vWyIZiH=p_hD)~O$By4KTe(sowvrMC2;nc-o__N}mci9%P0HGx4+H?>ZC8G( zW!{sF6B-;b}1E1bX-RW zr4uK2Jdhhb`b~J8$_hNC{hHO4E1@>7MmxA1T*#I1A~_IU%GJmcri44yP<sTn|M>BRQf7mwj-F7M8W1IOt+bZ-sR&mhMGsn2BHOaxm zIw=reE^BpbBrSfa8g5!6YjMeS${>`%HVZKGV}s>V`X#HFI$#;;BV|2(%+k|GDskwu zLb&0Q4=lRsL*E{71V(o=_p>&)3g zYq{*Ur=ttjY#u!D*i)H-eg6ue2i`>XE6~psQlx3sH(J)+`VYl)Z*SkO?{7klNT zTF1tZ^vI!PgKg%$NhJqCxeDRha4a3RRfOwUaLhu+EKVGtOb#!EuK<6U3IEIFI2g{;-B zUcB+chw`IGdWH@?`E~$(m_bkhlLAROShq$}qf2G2ZnYGMuTjE{Yt=||o$Ht&guyOl zMX5MG>RQHe+bo>&=dEoP1{}LIZX3C7FHd1+@bpKhl}TD7tNhKCP#af5ZA{Wyy%NPJk?*;C;!(hPVOxm>0@SLY`0?>BTA@# z9am$WTn@HMYGg52BOP3gERmG(Vkr=lD3ejjj}$CDHKK-_lCl<$x=tBhG>!{PPrJ66 z@3zg{NxPKqDVK8Hwwdp<%|f50PaG1iTlFr60A74CQW-Ly0Bt zk;BQ2lqn5VQW`0hVi1A}xWcjYG21MTNr6Z!SHsP=k?Xh3;wYgkD1_@!CI`40ZX$%p z0C9wC=Um&GbjrqvV--&2$4-1tjWli0;_Ww6No}D_ZU7)Vb}8$ag%Joa0Rbj!F)nLK zfH2|OS*L6a+D7)3-00EoxQ;bz6P7Y5(zyJFXC{09@Lj7o@pAx^nBkUCi?v>-Mw@RU zOs;2KZK7PN1Be14sBIO8ZL=^c1tRTS2{+qjVaP5O1_`B_5U#_x65>j@8H6z5IytAT z4>*?In;$#=pl#+4&-Oj0LJ1{THm$m8$Jp`Te#6KN{IK%hSS#Zb<7tqhsdPaV)0cU z>M^o|<0D6Yy&2vDbx|b~h_!6i;_bIkt}I}Z+6++5bu7a+^8;{QR|uCdSqpO|*Z_c6 z=5D?+cZY>j&K6TWKe6=Gu9>z|t6TIgHPmo5VNxCS=1q(c7J?8&z=drV1|7>tOMyr$ zS3=EYBiG|t`Xr%D6T-C_S0Y>uF9e8io${n>mqv;crye%413!&6ul=N?)m=fUl%QOS z14I?B;|k&0j#V6SZ8Oi+NDG&P4dqhqv}5ThUoK^`%4Dsc5ULW&7$8j7w$iR+P1r=j8?IvwRr`IWR$_4BS;!L3uyiT#2B`w?@JS|whAZ3*SwN)WZ4*oINL4g=gIULg zw^sha;<{>p742S1S^|x(K%Z%~`VD?crt!W+YW2&ja!$F>3xjZhYVaCITv47{=J zE6X6fKG*R_uzCSN4%V;NVy%Cj8Qk|BT%d65d?3=adW-8=^@Z^hUxD`>F17TK0PwM z4O827vGzDq?l~9L?D^VvKDkq6SNoo?<8{1_KM~BiIQF0DvtP#r@PEa&;9-8LMFao< N002ovPDHLkV1ioxwd4Q* literal 0 HcmV?d00001 diff --git a/test_one_image.py b/test_one_image.py index ea930dd..01c17fe 100644 --- a/test_one_image.py +++ b/test_one_image.py @@ -26,60 +26,60 @@ detransformer = transforms.Compose([ transforms.Normalize([0, 0, 0], [1/0.229, 1/0.224, 1/0.225]), transforms.Normalize([-0.485, -0.456, -0.406], [1, 1, 1]) ]) +if __name__ == '__main__': + opt = TestOptions().parse() -opt = TestOptions().parse() + start_epoch, epoch_iter = 1, 0 -start_epoch, epoch_iter = 1, 0 - -torch.nn.Module.dump_patches = True -model = create_model(opt) -model.eval() + torch.nn.Module.dump_patches = True + model = create_model(opt) + model.eval() -pic_a = opt.pic_a_path -img_a = Image.open(pic_a).convert('RGB') -img_a = transformer_Arcface(img_a) -img_id = img_a.view(-1, img_a.shape[0], img_a.shape[1], img_a.shape[2]) + pic_a = opt.pic_a_path + img_a = Image.open(pic_a).convert('RGB') + img_a = transformer_Arcface(img_a) + img_id = img_a.view(-1, img_a.shape[0], img_a.shape[1], img_a.shape[2]) -pic_b = opt.pic_b_path + pic_b = opt.pic_b_path -img_b = Image.open(pic_b).convert('RGB') -img_b = transformer(img_b) -img_att = img_b.view(-1, img_b.shape[0], img_b.shape[1], img_b.shape[2]) + img_b = Image.open(pic_b).convert('RGB') + img_b = transformer(img_b) + img_att = img_b.view(-1, img_b.shape[0], img_b.shape[1], img_b.shape[2]) -# convert numpy to tensor -img_id = img_id.cuda() -img_att = img_att.cuda() + # convert numpy to tensor + img_id = img_id.cuda() + img_att = img_att.cuda() -#create latent id -img_id_downsample = F.interpolate(img_id, scale_factor=0.5) -latend_id = model.netArc(img_id_downsample) -latend_id = latend_id.detach().to('cpu') -latend_id = latend_id/np.linalg.norm(latend_id,axis=1,keepdims=True) -latend_id = latend_id.to('cuda') + #create latent id + img_id_downsample = F.interpolate(img_id, scale_factor=0.5) + latend_id = model.netArc(img_id_downsample) + latend_id = latend_id.detach().to('cpu') + latend_id = latend_id/np.linalg.norm(latend_id,axis=1,keepdims=True) + latend_id = latend_id.to('cuda') -############## Forward Pass ###################### -img_fake = model(img_id, img_att, latend_id, latend_id, True) + ############## Forward Pass ###################### + img_fake = model(img_id, img_att, latend_id, latend_id, True) -for i in range(img_id.shape[0]): - if i == 0: - row1 = img_id[i] - row2 = img_att[i] - row3 = img_fake[i] - else: - row1 = torch.cat([row1, img_id[i]], dim=2) - row2 = torch.cat([row2, img_att[i]], dim=2) - row3 = torch.cat([row3, img_fake[i]], dim=2) + for i in range(img_id.shape[0]): + if i == 0: + row1 = img_id[i] + row2 = img_att[i] + row3 = img_fake[i] + else: + row1 = torch.cat([row1, img_id[i]], dim=2) + row2 = torch.cat([row2, img_att[i]], dim=2) + row3 = torch.cat([row3, img_fake[i]], dim=2) -#full = torch.cat([row1, row2, row3], dim=1).detach() -full = row3.detach() -full = full.permute(1, 2, 0) -output = full.to('cpu') -output = np.array(output) -output = output[..., ::-1] + #full = torch.cat([row1, row2, row3], dim=1).detach() + full = row3.detach() + full = full.permute(1, 2, 0) + output = full.to('cpu') + output = np.array(output) + output = output[..., ::-1] -output = output*255 + output = output*255 -cv2.imwrite(opt.output_path + 'result.jpg',output) \ No newline at end of file + cv2.imwrite(opt.output_path + 'result.jpg',output) \ No newline at end of file diff --git a/util/add_watermark.py b/util/add_watermark.py new file mode 100644 index 0000000..cc62eaa --- /dev/null +++ b/util/add_watermark.py @@ -0,0 +1,131 @@ +import cv2 +import numpy as np +from PIL import Image +import math +import numpy as np +# import torch +# from torchvision import transforms + +def rotate_image(image, angle, center = None, scale = 1.0): + (h, w) = image.shape[:2] + + if center is None: + center = (w / 2, h / 2) + + # Perform the rotation + M = cv2.getRotationMatrix2D(center, angle, scale) + rotated = cv2.warpAffine(image, M, (w, h)) + + return rotated + +class watermark_image: + def __init__(self, logo_path, size=0.3, oritation="DR", margin=(5,20,20,100), angle=15, rgb_weight=(0,1,1.5), input_frame_shape=None) -> None: + logo_image = cv2.imread(logo_path, cv2.IMREAD_UNCHANGED) + h,w,c = logo_image.shape + + if angle%360 != 0: + new_h = w*math.sin(angle/180*math.pi) + h*math.cos(angle/180*math.pi) + pad_h = int((new_h-h)//2) + + padding = np.zeros((pad_h, w, c), dtype=np.uint8) + logo_image = cv2.vconcat([logo_image, padding]) + logo_image = cv2.vconcat([padding, logo_image]) + + logo_image = rotate_image(logo_image, angle) + print(logo_image.shape) + self.logo_image = logo_image + + if self.logo_image.shape[2] < 4: + print("No alpha channel found!") + self.logo_image = self.__addAlpha__(self.logo_image) #add alpha channel + self.size = size + self.oritation = oritation + self.margin = margin + self.ori_shape = self.logo_image.shape + self.resized = False + self.rgb_weight = rgb_weight + + self.logo_image[:, :, 2] = self.logo_image[:, :, 2]*self.rgb_weight[0] + self.logo_image[:, :, 1] = self.logo_image[:, :, 1]*self.rgb_weight[1] + self.logo_image[:, :, 0] = self.logo_image[:, :, 0]*self.rgb_weight[2] + + if input_frame_shape is not None: + if input_frame_shape[0] > input_frame_shape[1]: + logo_h = input_frame_shape[0] * self.size + ratio = logo_h / self.ori_shape[0] + logo_w = int(ratio * self.ori_shape[1]) + logo_h = int(logo_h) + else: + logo_w = input_frame_shape[1] * self.size + ratio = logo_w / self.ori_shape[1] + logo_h = int(ratio * self.ori_shape[0]) + logo_w = int(logo_w) + + size = (logo_w, logo_h) + self.logo_image = cv2.resize(self.logo_image, size, interpolation = cv2.INTER_CUBIC) + self.resized = True + if oritation == "UL": + self.coor_h = self.margin[1] + self.coor_w = self.margin[0] + elif oritation == "UR": + self.coor_h = self.margin[1] + self.coor_w = input_frame_shape[1] - (logo_w + self.margin[2]) + elif oritation == "DL": + self.coor_h = input_frame_shape[0] - (logo_h + self.margin[1]) + self.coor_w = self.margin[0] + else: + self.coor_h = input_frame_shape[0] - (logo_h + self.margin[1]) + self.coor_w = input_frame_shape[1] - (logo_w + self.margin[2]) + self.logo_w = logo_w + self.logo_h = logo_h + self.mask = self.logo_image[:,:,3] + self.mask = cv2.bitwise_not(self.mask//255) + + + + + def apply_frames(self, frame): + if not self.resized: + shape = frame.shape + if shape[0] > shape[1]: + logo_h = shape[0] * self.size + ratio = logo_h / self.ori_shape[0] + logo_w = int(ratio * self.ori_shape[1]) + logo_h = int(logo_h) + else: + logo_w = shape[1] * self.size + ratio = logo_w / self.ori_shape[1] + logo_h = int(ratio * self.ori_shape[0]) + logo_w = int(logo_w) + + size = (logo_w, logo_h) + self.logo_image = cv2.resize(self.logo_image, size, interpolation = cv2.INTER_CUBIC) + self.resized = True + if self.oritation == "UL": + self.coor_h = self.margin[1] + self.coor_w = self.margin[0] + elif self.oritation == "UR": + self.coor_h = self.margin[1] + self.coor_w = shape[1] - (logo_w + self.margin[2]) + elif self.oritation == "DL": + self.coor_h = shape[0] - (logo_h + self.margin[1]) + self.coor_w = self.margin[0] + else: + self.coor_h = shape[0] - (logo_h + self.margin[1]) + self.coor_w = shape[1] - (logo_w + self.margin[2]) + self.logo_w = logo_w + self.logo_h = logo_h + self.mask = self.logo_image[:,:,3] + self.mask = cv2.bitwise_not(self.mask//255) + + + original_frame = frame[self.coor_h:(self.coor_h+self.logo_h), self.coor_w:(self.coor_w+self.logo_w),:] + blending_logo = cv2.add(self.logo_image[:,:,0:3],original_frame,mask = self.mask) + frame[self.coor_h:(self.coor_h+self.logo_h), self.coor_w:(self.coor_w+self.logo_w),:] = blending_logo + return frame + + def __addAlpha__(self, image): + shape = image.shape + alpha_channel = np.ones((shape[0],shape[1],1),np.uint8)*255 + return np.concatenate((image,alpha_channel),2) +