From 959c4dbabc7dc33066e3b0c5dffd50d6a89016d0 Mon Sep 17 00:00:00 2001 From: jeje <jeremy.rioux@student-cs.fr> Date: Mon, 17 Mar 2025 15:54:33 +0100 Subject: [PATCH] affichage mi smooth + appuyer sur echap pour plein ecran --- Objet/__pycache__/display.cpython-311.pyc | Bin 7197 -> 7900 bytes .../gestion_clavier.cpython-311.pyc | Bin 1343 -> 1456 bytes Objet/__pycache__/parameters.cpython-311.pyc | Bin 7615 -> 8163 bytes Objet/__pycache__/ui.cpython-311.pyc | Bin 25571 -> 26195 bytes Objet/display.py | 17 +++++++++------ Objet/gestion_clavier.py | 5 ++++- Objet/main.py | 20 ++++++++---------- Objet/parameters.py | 8 +++++++ Objet/ui.py | 9 +++++++- 9 files changed, 40 insertions(+), 19 deletions(-) diff --git a/Objet/__pycache__/display.cpython-311.pyc b/Objet/__pycache__/display.cpython-311.pyc index 696fe0c14ae595903f24b7cb38ee0af0fa6dd156..47c03061a540418584efdf3d7ea6e7fdba203caa 100644 GIT binary patch delta 1954 zcmah}Urbw77(eIU-qPN-w}0q`{voV`l~R}!5z8M#M8}KEBy(N1(1~5$DNvxLIk$6@ zl#B<AkdTFWwqT4V#0QMo%dqcibPxKl1QHTSb%`%#F~)>NqYu9Lo!fS{lw_y({_b~v z=R4my=R5s<pAP&ytbA^>$q3r-efv`@?%T@OvdFv8{v@}5JUQ$n4a+!YBBo^&GZW(! zBIeKVq(Ed~W#S@M_*#e!My*5vv=KX?LL5;PZe$UB1)nZ#;IEAM3wF_z5vZ4CWUpYw zOfmJ5MIn!7gwk>d%~V!KqiAAaQOt`ohRPVhv-&9Qu3?2T8>nH$GOOm%ro^5!t5?M> zjL<!JOAVv7!JMtqgOwX9c3vQcJYIm5z|JZp%3~sJNe}_vQp=-w#Y6<bS&b}f?rfr7 zU@1RQ*hF32b^x%C&E2oiR<Mee1R<A_sj2B)l7tP^%sKfT%85);)4)z#ot>id*D|Ci zW#?0woW^qy2(W!~r1^a?m(afIy%XDre;D6YJNDF$6`8r^u@jF}&z<;Y?7s7UY`gUv z_XFSev7PbQu6lV-y}V*rlULx!=Hx<eSkRZHy%0>}TMY!L1wQl?z=CTurDf+5@0}tv zaXqf@;3PX^8OI{q6y1Ry*v$uM1FfJ*Oz^U4QCzLc(<X*&yV-$3X<0Png;BJQCmt?J zd5H+K`Zd$8RkSH^Cy#*gA~|#~oMR4a&@K^Uc|!Er6SCGI>sLIgNDQ^ttcUy78nj77 zE{DsnBDO6zjp(ae>fMR;2+mf|u`{+H`%+e4(*rr`9f<P?&UFOW$j;gV?sdGTK$_g; zZN}l$2A(E^eg>Bk#8usMwcT4v2omNiPrXo^Fn|4$>_7>X6L#!~(NTNnxg7sPl-rE4 zV&x6wcu5@9mk#1+s};xUVR5uGYER?m*e`Y!53|4RUATuGcZ6_+z3%W^Mj*bf8QRb0 z9Ug`Ei^fDI7tc{T!0tNw@d$h9c&T-e56D_F7oXN86c#D>EdvWUTiV{>eGWwj_e&?} zR4Nk(H6<w>;$vOxZD+8%8_cly8{y2GPvL*@HdKq(+4-_AUiv(rWh|+u2kfGpP0&O- zK9|yRbeM;EfwPh}oyaCNp0+C>+{eyNBcG{lGu74Z^3`g0Up-bBbVY@>U!S4h14H4K zyB&MZL#PF3jY{WInPjx^gZeJUy=<hp$#;SKG}igVZ(J;7n_tB)9;0%Qaj<EOedh_| zDEq_X$K%ZGO|u84COpLKg8wGL)kS&>bbL?OGR#A`RQ!aoq9L6~W#B^eDrZckwdwim zr6hKMpT<jXsmv4`NU6ds*q?5&MDU8LwE!%kM<&afydL?e?~|e6uBl_s)Ui`}D6iXN zVXT*0`1qh3wzDPg;E52J^hFN5l+jBZ_)#g(2aR$dY~S08|7HJpCnA#c7Cu0A=)%%z z;H%JxLY+I2iPFPv`l22ymO|X+FtDF|la?ebR21p844r0Y{T@8elK%5O;~0bY(fCB? N|EeCn!5;e~{{c3Zr#S!s delta 1385 zcmah|O>Yxd6n$^THul&v{+OhWoi7Js;t3(4q6C7Pwy7d2RU$w_sfd(1hG!g8+lihX zK5daoky<JiL3aT~MTJ(Ps#uyuSFQK~MeL9)s;bMXLNcYRcG2EDV^XA8>S%P{^}Xku zxxVkcr<1o27~kr;#_$O?ALRzk>&B0oLO=0&F@OEZ$X?GnoA-)sh`t;X-mm!?E_~~J zUK2s#$JH+aSPKXpQ5VJ>vqJC=U*xCjcli$<Zo#6r)PI^gmNvQ&Rr23JxWTIIEDR{7 zHq90e)OeMjRba|zj^S#v5rpzF@tI6ebu+8BvYl0SM}>iSC*+i%#@V$A!LSV%{OwCA zxJ+of%<mNGLt(?cvYanf%47oHXycxF4AvMlwV6QEt@wtT3_<Gf*c*eI|E4KNkzmsk z3F*gJ?uM~Il&9dmz)7ya-9U%+0Gs<1|Hx+yN5j{>HKod@*#=+usisy{Y~F5J4qt_4 zEZU{8sv^{TIFS3BL!lhJttSJj@U+--|HJ-DPr@IuPRGvG#_qYE45~tF*;TKyI~-@! z;RyU~1jh`sQxSTb%0(l|ZSlKy^P#O25pI)<w8@!p*+_&o_%#D3)6r@!4G;Bh9OhIo z35P;m7+rB9RS_}xB$$9-f^M8myv0BM%51u~egyhML;uaDzYU=rN_p%vG627aiqR3; zS2`ZfMz1*=eGrzz!+Zp8g@+FB#bU#gDOJ*^3awRI>Tmy$aFT$wSiZ5zsuV2M$=L;> zII@bA`@o3o=aX<KvafHP3R*c^NiSvdxupuKY&!?wi%8G*_sN-{5h7kOBXjvudbK37 zQtqdk1y3T$=rD%Zk)X`XOR!WJGE+&*<s5!(B_lJ%bRl1^$b-mfxXVkKm28<V<RW}- zraZeaDzCx!<_?~yKQrePrK#0Vy|#mQ9l^?_@N~YsQpj8!6*6-keM;FQ_1n>N{Pi)c z$^jD7MNPcCE5}G=ZV{y~%+{x4Q#?YZmd9>Rp1@ds2sh#uKMD`y-TVXiIbPIeEH2|j zGa%73(Z7>edkA(D948<bNuQEOq1MyKe}yl57J{l9FY_j75bo{p&hW=O5914Cy>mY1 za*s9%;8yRM!H-biP~~b#X2?k=p!@!p_s!z6SS@7Vl1nhyH@jz+bCk8m=XU<jSF0ts H*Ejwz(U2%Y diff --git a/Objet/__pycache__/gestion_clavier.cpython-311.pyc b/Objet/__pycache__/gestion_clavier.cpython-311.pyc index 124c2c9480caed225c6d0dfdae008f8d71ba09c3..23521c0e6553991526708d81d478d2fe60dcd60c 100644 GIT binary patch delta 401 zcmdnbwSk*=IWI340}v>f-$>s$kvC7A9mInI79h<G#Ge(ICQe$+&z8cP%><GvW~*UK zVViu6(U6<1mNkXFmMu@FhHY{Kqp=`sEn5vk3I{}8kt0y_2&1t$NEI7Ul@drF!VHiO zW}uGAE=;EU3@KbtT_QCs3s@%yG73-DXA<IMtzk=J3TDvcp4`M_&HhpvXul@g<o!&# zVz-2nGZORCQ{&4s^HTE5<8$*<QZ?Bpzhjb>Wi3c7O3b~*Sx}T(1{S}?0+KBT`A%W7 z0<#Mj$Q+R0iq$sfF*7krKVawTNNTEVsJy|!d!0k!5{JS?4y7v`N*6ekCKs?cMuF7d z;)svWOUzA;kH5uSRGPPvp-2WOS|kM|esS0UEhx=NwJTBvav6cRI2cHLU}j`wyul!N Z0fs)X$TCWQV1N@2jFY)o4Ou`20RWW$U`zl2 delta 315 zcmdnMy`PJBIWI340}#wycriV9B5$5J8;A!5EI^tWh(Et!oH%JQKWhqWHWNsyn5~92 zg>CXNMni7aT9y>{TGl+78rI1TjK+d2wX8J^DI5@WMUFtxBaFu4AXRKYRZ1Xz2s1!B zn1MPbyD*t@vedAqF$FVda!uaGWX+_>I{62aE|VtPWNT(wQO<&*)Ux>8{FKyNEFiKN z<jTpV%r0CKKnBQ(#oU_@Gcz$xe!$`w2@<=-5g(tIn420Oe~Y=OG;bwCkt9&GNE}G~ z;;;dlQJRx#SEK;sG6HdN5Rmx5%*e=igF)~D41HjcVwC>C04J;_SF;+jfXo2^^npkB diff --git a/Objet/__pycache__/parameters.cpython-311.pyc b/Objet/__pycache__/parameters.cpython-311.pyc index 19264a5c389d48d0c0d2bad8fb832f43da817c38..9997445863ed0721673cbb0b8a9d416fd5347fe2 100644 GIT binary patch literal 8163 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 I5D~Th1KYxEnE(I) delta 2524 zcmbuB&2Jl35Wx4@yLReb+jW}QaqPrSAZZPuC6p$L;*b)hd<c}#q6#Gvs!~5IYDH}G z){$B(s<|MLI6yRqNE}cO5ENDA0Dk}ii4&(toGgKm%7qIGQZH~o%skt>-nC;>@vI#` z&%F7~$Bw;zxcKdS=*wU*px|2DJKF3I?}mP2%exP+sBbD69iC(3tPI!LU)Ay;ovAPG z-BE7$S)bI3t|(kX-KnOoqM@d)_Z_H;av!hya&Y_(PM`ET)sa?h;sRZ8x&vp}xYpEo zQ0hZ6OgCD%l~(1aZQO~qcEd$lalGHA{io!r*gZ$<&Ny%yRpS5|vc7>X-5TscsNasL z<ix67Ktnx1s;spEa&k8Nc9a{KdVL|s+V2}pt$c^iqW-gv2E@718dt`U6So5!S}e)E z2Mp&9ull+jYVNoXe)W&(Es<b1I?(Tc5AP`ZVNy?WFOMI1kc3x#VN`3*xokX7bRvcw z#H36s(U#U}3rlIkFTRN0BU2}Lq`{55%Kg9G(FWJwm7C<c%Wfwh=-rf5BZwQ~Og_oo zNjz4NbR$UEm8m;O#ASc1AY+XnZiqXGJBc1aoKrd8oXRNoW8+;@xgVi{9cVZ4j(5U| ze!@nFdE_K?n@OV6a8rxY<OZy2WH+*H!*1Ct_{70)et&cLxq^?ICs%6f*2b-ZpsyPI zp<iYOTrjTc^h+S>0zNXvd<puTfUk`SUqkz|vBu88Z18>fK4`KW%!ID8D0~=N|K|75 z4=R|^LHK-d>7{9Otf_^Kt$fBS=7@5cG+L>6t57z*xKF3kVx9~aQB(%r*bsQQoEPT# z&3yTWJohwAMVHtD6r+WSMLd=9$ip>nsc0U0Y^+ID5Dq-CDfTQ}h-IW#9L^8TkCG>z zrZ8fL#4-xo<;U1Lb`c)M(kHk)-|q6k&^cX_UM1TC9K}D59C}s+{mzM(Q5<5;upS@w z$pSCIz2SuC&K&H;=P<}o{F9LtI{6xjRTR#C%;NE+o+aZo5)1If@SRkn{!65pCE;|0 zY+{lvLM}0b5k5`)lc5M1wdN_5YO49JD2rFf>Gckt-zCS{68x6D>t8_YO2z;_GEtTB zWzVjVkL_(|aGeZmC=M}6+RJKvv?D?PTFeJ1-m_lEo|LxAj+GX<%)Hvjv0{k;)1Eq3 z7$iq4Sjpb#RPGr9zDR<`M$q3IaTY~QD{OC-?uxf)A27FXmP9d^H%%E_tdrI&whQ8I xa<KCIyDz&{<lFD$Ul2Jo&_m070F$ZJ=`6d3sdbirO8ui&>pccvrKVK^{|hMUl?(s? diff --git a/Objet/__pycache__/ui.cpython-311.pyc b/Objet/__pycache__/ui.cpython-311.pyc index 0c531f6e5aff67b0bd8815cfaeca7a7868e32057..9f56049622caeb7b188824a768688d08eaa6bf5b 100644 GIT binary patch delta 2074 zcmZ{ldrZ?;6vuzJr9X$IEd_kSpeS=z98+65`k+ui9#N+Z*%Cx+p%qXpdJCDW25N@R z=wifE<_m`C=9tdcI$z7C&Mhu8dw?Sul5BHv$+ADpbX&G$f9;%GKymJu_VYWxbH3;F z-gEEo_Ri<*+b@~+9gSw9gjcC$sP1%rhxQJ8vE%phiS1IA)~l(IjM_*E`$oflfhoGS zCmAV6E+yXS`^Rkb?vuO>TnV$_u2!2;tJtJiC!}2Vj#}w{1(W=#BO+a_GN_WI3dtKY znwBck&?!lnrdk)ZGDKSX16f-ThwB~9mT`m=p63cosyldqu1k5p(tNn<f$LTtSL2gW z!JnqcY=RjPpfMVF7IIiy=WBM?@P@kjX1^~G2<j`#vc|jYl<}t2CP^V_NFCQ16OQdr zht>PNgQ*J!;urL*t@ybqc&0XbkNS|`Cru5Pbu0=mI-D^$!!nR$xu_UOwDrf?hSb{5 zjIgmIGn{!iX3$_BNHF)S?fAJVcu^U>M}5elr1UA><}T|2dzZa0Y0#KEkeoY^<h+XI z3i{&;hIH{eHb(a7lnPcD3G0_C*b?|TaWN~4%ul+aU@t}PPd>_6ZKQLmdIGD2-n2=~ z4HwcfSp(cj`#@cbQ{+Cv8aQHDo$012Q*T#CyTq%|4klu2S~hq+%|3Taz{lMU{xwbY zk!RB1*H2$XxvLQ(%McR1<x~drc~f=N&<#xu{^m`j^MJwB%Ytyt)WTkY9J5v4Lhdc- zPK8dhQ{GIEt#Hen&00a1eO_Hj4ywk3(4Sq(w!$>aHcbc}xV9qL4ks*&*sJij<vQ~6 zbA_?nNxlsM<(4Jmv^!Co0->B|<sGEi0q1h66GCVjl_SN-y%T0yoopA>SX;+s?}oe9 z61E$%ZGCJx{9sGQPWCt^fzCdYb%4o!RK1tdfe?nD>^51L`yt)2QA4438Fxm5J&qi? zlS~Tw;D$Xen%gy+I|=-`Ps#g6C8?mzH^S}QS>t{}@3gT4u-Mr%&ij|sAs?c|BUt;9 z#F6@X=VZ8^mmzmQEL%Em2=)1n*d7r^z>luIkmrg`5MzD=J;N%$XT8tF-B9IP%6j3r z>uYub+^!jLs9?5yloC(D7X{vw5Sm66A4}x#QS2n)ER+=%v$tVSVRy98Ba5&PvWh3e zvLX}fgZ85CDd$KWLX57`L2~p$&cb5+&9;S)QHY84fvGq@_7sUPAaFM%!|fv1f9r{P z9)sVCi>zl!{UKo<p@!f^49gxro)(R~{=oz1brfzOtcAvsY4SQU8(~+;w7KiaeCX|> z$0WpZt|v1QVU+nCvMZs#B&}^LnXeIEC+s0a2<Hix2p<tH6DkSfwGdlGOjmS8OeILs zUcxcLTZBGBwC!Z=CbScF5;jXQ$X4K`4)${7bg3&L<^Nyo;7o8<Pfr+owO_zPm3y!Z zZj)rFSn;v(IMp-}&Je_=KY><&PI!aC5E?lqB4DkaD=)|VKslUt&4JG9d2M4o7rlP8 zhoa?csjBGvHL^t8KP9V?AX@(kS)UQE5UwJOn&?Qxz#dte4J6t~$ZRII5d4HD0w)9z zxMp+77AsQ&O)KdT*tK#FE03IC*`;JUsPLGx3P`e$u!LYE<Pug8st67O{lV}MobjZv zA^6I(EM8Wr^!KDO#6xP$MLaLRtI5c?f!bjuZ}E#)A-X;3f9#(p9P69BEsZ`WAAq#l ZRr4BEZ2mpz@w_kme?A;t1t)7Q{{nOi8-@S? delta 1632 zcmaKsUrbwd6vumDTwz_AKwxuYY@yTGjUdYeN@+`h0s}^%F2O{g1=bGPXn_l*hA<0p zq7paO9cFY0`vVGFG{n`B#p&3CnK9~&@r}Kh?7<fw#$uw;X#9PDmoch~efZ?ubH3km z?>+Z-`s25B?<-24GZ;4N#4mN`hmOILNb)^uh&*s@IHWTfqILAWfjW4{=5X{u%3nm* z=>4?%II3nx#z88Jp3GQ^qlReRQ!_-((UoobC$_jmCpAZ)FHT_Bu$qfR6Q^bGrFJgK z{#5Tlq77*0zq4CYn?xwZt-CaFBlj4$Qd{&b<JFYRmmq9@C|T<#5`#Or*OtNl{3N9p zq81*?zes(YRS={gPZSg>L8M<1=`3C;uqz>44sw2BK85&L;i6tXD{ik2aE|!^4RX-@ zx?xBpOmV6#4)ZNbCL4>Mqai+2beqDw&z!|(%hO62wh>M#PUj_aag1qHm}->~2u=t= zbE@nZzuFP$Q4SZ|=>*>_el^B9#?{s;dV?d@d1_#bZ96q_qs>fXJZ_uOpMrH9IL$V@ zMR^<H1RuBe8c@1Ss$DDoX*VlUjG~XHOEziVceV1h5{q*Bp*M?<mYLY<cqXR3-(jIM zJnuLklYODos!YH*E&Be;xY~PDnMHYLy`(<o)?b!c6{(!&NJ|zsIzv2Jo|GDa<BY&^ zLZHp>+b_<`VtGBCW5s!g=J-Z=Hvi^)R(T(?E5e!1mWujJIo1Sq&8*I&ei`_fKd7jr zY5t{RDrWkO;su_pbkarssd8$|CrGUSKJwwGc%rJ3X8CT_V-)YfGRxx!9LgNR=;|Rz zVn?N8tNNdglMr3v+G=O`3c^Jo4{!sm0?SHUpx@KprFtJ-sOn*qeZUc<6GNQ=ucyo7 zUrt($+Euj!<(E;`lB(#ks#HCGwG-vFg^Lp#_hij>a&b=0&hT;6UIX3)<Y`(!bQQP; zTn9b_T!35^IYK!DIV$;f1E@{`mw*evETDZ1L}S1(Fbafp8w3aWPK}j%qWap>)c@Ob zBcF3`+uY&n_w;mk2KsABcw59dxSReVn(YTZ0^|bB@rXN(7Wk|?N2wFiJ{Rkqdw9j2 z7hapVob;o~sO@mefn(O%)Ndk^171ReDQg4$0?{qt2JpFn$)Md^KFZp_wYFUl`GLJX zU@veKI0giOZUK`b|2S3o5#0QZ2kZZ{XV1nOyu`_Po$hyz7&D`Vt)X~I=7q!0n@ZuW z1}uOLcoAp>tUxg^#3|lP`kHgS4V1{Iyw_=ft9-k6-xkH?cr_T1JD{D)T#@@D(dzH^ h2D^NA^*bK-x$}GpwC}#|@m!JlU)NU~c*l`~e*nPPr*!}T diff --git a/Objet/display.py b/Objet/display.py index f733da1..60f08b5 100644 --- a/Objet/display.py +++ b/Objet/display.py @@ -32,18 +32,23 @@ class Display(): def unprocessed_frame_copy(self): return self.unprocessed_frame.copy() - def draw_all_points(self): + def draw_all_points(self, brightness = 1): + background = self.frame.copy() for point in self.param.interesting_points: if point.name != "curs" and point.name != "bar_point_left" and point.name != "bar_point_right": self.draw_point(point) + self.frame = cv2.addWeighted(background, 1 - brightness, self.frame, brightness, 0) + + def draw_point(self, point): cv2.circle(self.frame, point.pos_int(), 3, point.color, 3) - def draw_shape(self, param_list = ["net", "ant", "wind", "height", "bar"]): + def draw_shape(self, brightness = 1, param_list = ["net", "ant", "wind", "height", "bar"]): def get_point(name): return self.param.get_point(name) - + + background = self.frame.copy() for shape in param_list: if shape == "net": self.draw_line(get_point("ant_bl"), get_point("ant_br"), (255, 255, 0)) @@ -61,8 +66,7 @@ class Display(): self.draw_line(get_point("bar_point_left"), get_point("bar_point"), (0, 0, 0), 5) self.draw_line(get_point("bar_point_right"), get_point("bar_point"), (100, 100, 100), 5) - - + self.frame = cv2.addWeighted(background, 1 - brightness, self.frame, brightness, 0) '''cv2.line(display.frame, (0, int(info[5])), (s_w, int(info[5])), (255, 255, 255), 2) cv2.putText(display.frame, "Hauteur de mire : " + str(round(hau_mire, 1)),(0, 20), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 2) @@ -88,7 +92,8 @@ class Display(): self.draw_line(point3, point4, color) self.draw_line(point4, point1, color) - + def display(self): + cv2.imshow('main', self.frame) if __name__ == "__main__": diff --git a/Objet/gestion_clavier.py b/Objet/gestion_clavier.py index 84baf09..5de1973 100644 --- a/Objet/gestion_clavier.py +++ b/Objet/gestion_clavier.py @@ -1,6 +1,6 @@ import subprocess -def update(key, vid_mana, session, ui, prev_mode, mode): +def update(key, vid_mana, session, ui, param, prev_mode, mode): if key == ord('q'): return "over", "over" if key == ord('s'): @@ -24,6 +24,9 @@ def update(key, vid_mana, session, ui, prev_mode, mode): if key == 13: ui.change_setting_mode() + + if key == 27: + param.change_window_mode() return prev_mode, mode diff --git a/Objet/main.py b/Objet/main.py index 95bada3..07664f7 100644 --- a/Objet/main.py +++ b/Objet/main.py @@ -42,7 +42,7 @@ class Main: while self.mode != "over": self.display.load_frame(self.vid_mana.frame) key = cv2.waitKey(1) & 0xFF - self.prev_mode, self.mode = gc.update(key, self.vid_mana, self.session, self.ui, self.prev_mode, self.mode) + self.prev_mode, self.mode = gc.update(key, self.vid_mana, self.session, self.ui, self.param, self.prev_mode, self.mode) self.ui.move_parameters() if self.mode == "video": @@ -51,25 +51,23 @@ class Main: break all_ball = self.im_proc.get_all_ball(self.vid_mana.frame) self.traj.update(all_ball) - if self.traj.is_over: self.session.load_traj(self.traj) self.traj = Trajectory(self.param) self.display.load_traj(self.traj) self.session.next_video() - - self.display.draw_traj() - - if self.mode == "parameters": + elif self.mode == "parameters": darken_factor = 0.5 self.display.frame = (self.display.frame * darken_factor).astype(np.uint8) + print(self.ui.get_brightness()) if self.ui.is_mouse_moving(): - self.display.draw_shape() - self.display.draw_all_points() - - cv2.imshow('main', self.display.frame) - self.session.load(self.display.frame) + self.display.draw_shape(self.ui.get_brightness()) + self.display.draw_all_points(self.ui.get_brightness()) + + self.display.draw_traj() + self.display.display() + #self.session.load(self.display.frame) #cv2.imshow('main', im_proc.processed_frame_difference) cv2.destroyAllWindows() diff --git a/Objet/parameters.py b/Objet/parameters.py index dea29ba..3d7fe79 100644 --- a/Objet/parameters.py +++ b/Objet/parameters.py @@ -13,6 +13,7 @@ class Parameters: screen = screeninfo.get_monitors()[0] self.width = screen.width self.height = screen.height + self.mode = "full" # Liste des points intéressants self.interesting_points = [ @@ -39,6 +40,13 @@ class Parameters: self.ant_height = self.get_point("net").y - self.get_point("ant_tl").y + def change_window_mode(self): + if self.mode == "full": + cv2.setWindowProperty('main', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_NORMAL) + self.mode = "normal" + else: + cv2.setWindowProperty('main', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN) + self.mode = "full" def get_point(self, name): for point in self.interesting_points: diff --git a/Objet/ui.py b/Objet/ui.py index 6d14687..cc0275b 100644 --- a/Objet/ui.py +++ b/Objet/ui.py @@ -55,8 +55,15 @@ class UI: def is_mouse_moving(self): return time.time() - self.last_mouse_move < 0.5 or self.point_near - + def get_brightness(self): + if 0 <= time.time() - self.last_mouse_move <= 0.1: + return (time.time() - self.last_mouse_move)*10 + if 0.5 >= time.time() - self.last_mouse_move >= 0.4: + return (0.5 - (time.time() - self.last_mouse_move))*10 + return 1 + + def set_bar(self, x): self.vid_mana.current_frame = int((x - self.bar_left) * self.vid_mana.total_frames / (self.bar_right - self.bar_left)) self.vid_mana.start_time = time.time() - self.vid_mana.current_frame / self.vid_mana.fps -- GitLab