From ea2891ff17b5ccea6a98a5d5b87347e0015d2d1a Mon Sep 17 00:00:00 2001 From: Askill Date: Tue, 22 Sep 2020 20:25:06 +0200 Subject: [PATCH] contours are getting extracted --- .vscode/launch.json | 15 +++ ContourExctractor.py | 91 ++++++++++++++++++- __pycache__/ContourExctractor.cpython-37.pyc | Bin 0 -> 2056 bytes generate test footage/gen.py | 4 +- generate test footage/out.mp4 | Bin 29897 -> 177332 bytes main.py | 18 +++- 6 files changed, 124 insertions(+), 4 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 __pycache__/ContourExctractor.cpython-37.pyc diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..f636bac --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: Aktuelle Datei", + "type": "python", + "request": "launch", + "program": "${file}", + "console": "integratedTerminal" + } + ] +} \ No newline at end of file diff --git a/ContourExctractor.py b/ContourExctractor.py index 8f8398f..fd0edbf 100644 --- a/ContourExctractor.py +++ b/ContourExctractor.py @@ -1,3 +1,90 @@ +from imutils.video import VideoStream +import argparse +import datetime +import imutils +import time +import cv2 +import os +import numpy as np +import traceback +import _thread + class ContourExtractor: - def __init__(self): - print("ContourExtractror initiated") \ No newline at end of file + + #X = {frame_number: contours, } + extractedContours = dict() + + def __init__(self, videoPath): + print("ContourExtractror initiated") + print(videoPath) + + min_area = 100 + max_area = 30000 + + threashold = 10 + + # initialize the first frame in the video stream + vs = cv2.VideoCapture(videoPath) + + res = vs.read()[0] + firstFrame = None + # loop over the frames of the video + frameCount = 0 + while res: + + res, frame = vs.read() + + # resize the frame, convert it to grayscale, and blur it + if frame is None: + return + #frame = imutils.resize(frame, width=500) + cv2.imshow( "frame", frame ) + gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) + gray = cv2.GaussianBlur(gray, (31, 31), 0) + + # if the first frame is None, initialize it + if firstFrame is None: + firstFrame = gray + continue + + frameDelta = cv2.absdiff(gray, firstFrame) + + thresh = cv2.threshold(frameDelta, threashold, 255, cv2.THRESH_BINARY)[1] + + + # dilate the thresholded image to fill in holes, then find contours + thresh = cv2.dilate(thresh, None, iterations=3) + cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) + cnts = imutils.grab_contours(cnts) + + # loop over the contours + for c in cnts: + if cv2.contourArea(c) < min_area or cv2.contourArea(c) > max_area: + continue + + (x, y, w, h) = cv2.boundingRect(c) + cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) + text = "Occupied" + + self.extractedContours[frameCount] = cnts + frameCount += 1 + + #cv2.imshow( "annotated", frame ) + + #cv2.waitKey(10) & 0XFF + + def displayContours(self): + + values = self.extractedContours.values() + frame = np.zeros(shape=[1080, 1920, 3], dtype=np.uint8) + #frame = imutils.resize(frame, width=500) + + for x in values: + for v in x: + (x, y, w, h) = cv2.boundingRect(v) + cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) + + cv2.imshow("changes overlayed", frame) + cv2.waitKey(0) + cv2.destroyAllWindows() + diff --git a/__pycache__/ContourExctractor.cpython-37.pyc b/__pycache__/ContourExctractor.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eea2bae31c907178f49f21655cf4d90c24ed4a0d GIT binary patch literal 2056 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 z

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 literal 29897 zcmdqKbyyW!|2{mM?nb)1JEb<=-AH$LcSs}M5`rKgDJs&9CuyJ#8UF~h><>e;K z!Qt!c%kE=uW$o%@?!xZsVasuKUUoY#XD4tUS2r(vR~JuVN=tJKb4yV!N)KxrQ65Sw zYYQh=OGi;IVNPLAN^=);Cx1_CQBFS|VNO3TE*?r}Yf(FEKT1z;3vfw*(#_K!JQVyi z^{^7TGTb9?C`OuAWmz@WAgr_JsFQt>KtE0IcxMuq2MqWx!Cwohf%%2-LDP26igIL--n|oamv3K#Z z_HZ%>cLKLtIC*=R`oV((%7ybmf=sER7ALhZvlwo<~JA@a6h5+)lp4&XXD^QvAQJ?Q{m`B?GImc^(;J| zzo@OJ%4!6|0}C)+eCsG|ZhMuER$#;s>2aX0;JA3T9bSVI{DQRvSMZarHZ=GF0Pfem z?U&Esf>8%%#HflGQn$V}YIBRNzlK!P3tg}lx=1%`U+oHmJvV}MwV+9Q_4(63h${d9 zk8D46f+kL}b2eNmhrvr}?Vecx=nq~*Op;}gS^9_G{OH|Ew;`4D zaD5$>HTeavP{AIlvr+R}U4}Vo?y{d`Ukibpda+Y-N6x~8!Aiwf3@`|QIkZsH?{?_5 zH~>N1+k%D~VkrgTFnmq%I@0uOr>bTM1&?Q)foTraOF5w(cxj-M|8 za8yq}+QjThi{x80WxXRfpN*chi@N)1st}{PsUNTOi9|@L#pSlKi*&#+k8~K&s%paF zYigf9;}!mr{F8GL`8;fb2h6GLOnvkIzz2c~(#JUtd~X#47tH`jCP>j9S{N;Z&B}6l z9qCZ9`MxBUPt{s+z?vuJm24G7?)Im~yB%nwF%bnkea@owIzqrk#;0PS@_D?;a$n=L z1OR&hf*C*x%dROPws}HamcANcdyoiRoRcbTccsH?PtDrn8+24AiM=6m_}y?}06ZOd zayLlfgKO%CtwuG7y%)e|JeIVpUb3;e16in!1E@8)?#7Oas{lQIkJi&K!mLe0ir|U^ zDPf{CtZ8ZEa_c|iyLAC@Z6IbeG_M*I*y(=}m`22PkJFVBz$WRD+lqzJ$c=F&XeIGT zY>NMQzVTGmIwkjwO+Qq^fxUgA@u2FxS|BpLyxmm$213g-()5~7LMN3rlt4oq$V3EW z;sY&wDT9Aq9S!)7P!$G`Po>{87>=s8EOfIAb!_^4OTmRTKJ~Anv}(097UK{}G{A$D zJ`6jEP`^O_5Vqw2IqduHPTk^YU&a>>a&pQ4f4%5_SmnOuryBl%=EUcTUfo z?I?IaLK9k=i?$nr7+3`p)I-lhn15-Jx%wg?y<3~g^MpqW1+1qq??6^g&?1cM3x1F9 z2>xA(%Lyer4D(8vtoyqBqnS~?DBKw`?x9$+C3H#uKuWXIC&z7jcsknVF{&DE5&*zr z4&rG-irB6xGmd$n0D1dT%Tw3HL@nMzmqCqopP+q;Pen7zU@0Ks;8~3!MI6^u4M&Y? zSdnYPzq$L!C{g)d>z3r|?!z0mx@H?Yj!*4k<$b%5xV~RQ=fgmNm(YCP|5ZFX5!)>; z&Zt4l;tLPr6%#8$5Rjh$N> zZ{$e%_R~a4$?*GhC)+2+*I#pJiB4^=wKuYHu749q!Sy2^oRKZj`J&Ou_(}4@&E*u6 zFF1j+h<`>2?!+B>`Y0cDUzwmrONyE1>qxovCyg_R=4OVgrT4lPJaV?}{d)|Rg~B(XF+*QY^5`G- z!}ad1PGU@30eDYPb?=O*C9x?zWc%V0p&|SQa(7tqW0@XEIulxybzS8l@au0QIuV*M zD8|EF)F8K}8Dc!%<}HNP_qg>WPiY=Dd(`P6C%R*FRix3q_1C4pgy%1&<>APNk7zwy za?kE9PmnN*3VF%Wlb)r-!ol?g>P?3%r%+HTA9zEu}OKp$tm%Eb|QUT>g$X(nV;s$M7&7FfaJ10Idv;VUxmXA0NCz< zfO(Ljrfd4;{_`{6uMbP`OutHmJ28ceJfoa2i|52;P@+AYWYJRQoMV03f_j5;zC50s@V-lGt9`SmG*Rt zo8FV$T>wDx8f3Q&&2Rl*&81T#MtIIE2zZ)sRP)sfEh%8oJjB7FC)SnFonfucSL4D^ zLZ_w@Ahf_~P}Cpkjc--Nu@uUSh%en%CCapw@>4WoRbd-qqBSvmQ2ungo`QDqt5cJ5 zoC$O8VAk6$H;>mb-7q7rcgF8!CHYA&=WJb?2W2>Xt~zPBu@_UV`qc3#cXie>u9OlE zq2u)h@;Mn>Jz5ekK-`5yeQaz>A$xzA`l=2Qf+Gze9$GYWZ9Af`;7NTPnd&m{iVOE# zS$Hlixj0vY{YB8?>qCZg-eY6x`nA+AN0G=by>ol{mfmhA<)j%Mm3U;7Tp1FiDCZI? zE+H66?0AG@O}J=N8Mwt)Y!0rjB2JK^(`#Cy-rq$ji?jD;n)nbpQv%*i9C8uTHwkh^ zxJz_*&A%bs+UVP|e-+ujMrdDtJQ2u~lR4Ft zr8-G^5wnV_9<+^@`9!A0UU=C!JjuZ5@LA}sV904wYUi7_N1J(3k1O2F@(@aSqEz8v zO!OUu`ksq165z0J9;hi;>s-{WtHu&XdN}QuMn_RAoHWIH;kD%(5C#YdX$-G-X-(^? zvX7_|N?g%b=?3Y$K?}*QEgt?~#4CGT46T)R>GG%IxapCc-?g(O69ONvtT-I2mE2F7 z-K(j;PN*xK{#fCA@G!2%ZuXEuk!v;+b%m?WjfeL`X{VKz#>o@b>PtVcA#1>s`r6z} zB+=kA8%QwK9d8xCFRU;0uy&AoZ9=~#2LJ2ELRdmBm-MSD#!uz>jx{x7a*`d82htRQp< zG>_^JYv3t^8JcSi%VDh^cdIUn6jHKJ+Rb`WbRXKn$}Ht3+qwBRvCD1gQLU>@w)PfF z&zRx{myt_ca(f4vzid=|D$Mvv_i`w?T#Z8^?n5;$q~ z90UyP;-oX1wRV_H{D9JXO6qE(>(aTxVPGj?(m;qZXr7G15{jlZCspV5il~f8G6|E< zwg>R!(F?YUU*w$^B3FiT4j(M?JQ15|h-}cl*F<;< ztlkI7Z&Z#hgd7B(BUDr|B{K5Z=k2;DFP~^dC*$9lQ?U|};@n;1LO>)~0OhK(*+B}U zu4#e3+rx{qw`Uvm<}IUTJ}rf2CgAsGg_m%?>)*n};nyiudnq$3w|p$%;J!vq|uoQd4*n?XqgF7GI9Q6_*BL0xD|BN!Ro359A{7W?ETeA47 zq;q2!HIz%MO`JnkHGSzRsT`O}(phfp?*k8DJ{*KDg%l24PjrTPG50%=7_6F)+;zJY zI<#<04c-zILrchMOD*$3iLSYts+Wn1uSp`CXe##4v*bC4Z14K+L{Q}k6&<>aUG^iD zme^R+o@KqILAl#F>~t^N_gO`LLxgmr7CqOQ{}(&#D8r?e8(*Rm$^U4u;O9V^;gG_? z>v@Htm*}mPQaRbDRRS8bSRY0%@?;fB0ipZ6=en=a#9>`*@e9`bS(c;5xmKl}t=Tw^T_Vk>WS^z$DjMH&Iqr}mlXX$RrYeI9!Mo)|9Su|X+7N_IR_h=vlgTOwJ zBGv2Z%yfyM3{{nYKal9??vM+eA|Z?^)VUlbx-2(!(Xc5mcth<+d(tQu+NzemrpHzp zzy2sN3pHu63g(&n+`;7cA|rxL6kr7@Qoo+q%&gYU;f$*0 z-Ozw9<3106b8BgUe}TE+4KB0q=qF(yIyhoUyPotc6bLF$Lne|}@{xmt-g&%4H;y-y zlI$UTIVv8Y9Q_DgL$tdA(bu{flW5@z28lcJfap8m_ffh%q$uNBg2Pw4N4>7nHYI0`m?79z1L0NK6GsFp#?N_S?>&mJLVbhWpsL}%=p42+|h+>Cb7 z20m|2Svs)e+teUTe;T|kh9z`Mr=+$#N(3@vK9uEYkCw7j4E0Cq>IZy%elr%ohFhU^?&c?1KuM>Q`aA$LfXbsHuizbG>>ZWlYkyM>`Y3hb68e z0ReB_0CyopQ`b@%w#igxF|4VxyEYur;Kpn`>fP{tyBc4f#B4QsG4X)_{aU#6u|N@y zOU3We{ys9jYRA6+nNc528r{^>yQSH8!7-zZ_wWO^e?s?OtZ$GhY75|qXYu9c2H&*! z_pTdY00sHkK#HcXP0n0xRe#aKjQuitVu8;#TrE(|(KEKNze^E@PX zglAR)u&np6F#Ar-7mNo40h&K|4NE{eri$RniUEmZwMdMTm{EEe5BQ{6SX9g8d&9gn zDClyu-xj+N1<5^CXF@8!k;jJemKHKfc->B4k4j{M7g)dDK3mrOMdxvHo+6M#g!hhiN}Bv-?gbiy*<$OhKyM z3c-iXV{+mTOTk8fgdHJ;B)?&j51oqkGQ*pQz*|PcQi*~W<<{Qe0#gOLcTUVDE<$h+ znu}32fn21au`Etn#ABLddq-B6O%#q#2%Z=8jA7sLlEXo`$Iv|BI!c zu4%Z7IlB^u8vbr~2+2qO1=o>F;iw;Ns@fy!)9f!(u)=fbnH*@Q+ixGX_kP?t%f6KN zdc^6{xFomTIu?eLG-uXn!?Oup?KxRMgSI@U;Nz`+j3(+J-!3hMa=DT-Sw=~+y*Quo zdbsfEI`bcd|5NiIMj&q|Xrb8e>8fUb(%l;LtR@_9dGs}^0Fo%q@zFF-YL$t~$GO^P z*~JN}4Xe7X_-mit_SnC176Slh4wzZ^vzCJkNQ5As2c*#WH`{2HTe98`Jz2b~fuapn=H)e;D2h!%9P@+(mH;cdsz{`^KcJFu zf~YBwLet+dLtUJhBjM$^Ge6Cxs!2FnnaPqNF7;?81VA;WdCx_ri6i_iZ2KVQ(Uw#h zF1yrflR615DgVOkGg%nM5B0$mge=G_b2Y2)ecv`XJ`7=#$D8X6#SnZ(Uu*J5zwOUp zAo+uw0-$-)*Ky3iD&J&3ZleatL7EZwfz~Q?3a#ANkpW#Q<*N#*a_-(P`)S#i-sY3Y zo4a`r3oPP}tH};M$_-@qWG%j#tTU4&3BMTK=$yu+aE^^o?KG53s`KAZ#BrFZLP|GvbS< zmgsF)6Cyn3#59OapAOzY9@GBV6^<9LGn>p~k(liERU49F%ibO}AVY9R3A}$NxUOOw zScXYc$UJTAJrT`L(GFia!GgHy37jQSo8MX!osyVWa%iZrJJ7E#_3%RU!%plfrBLTJ zm-$+dB7E;_n4(3=pcIF;yZpd`k)yC{1mzzc{r{`C80%m;5}<|Uzhf4(m97#BcAuxP z7;wsHQp#&~&h-Awi5(BrygUp)FW*-0j!G|yl^igx=fYZ5glmaS;&T*C(wNf&(Baz! z`4%vxwjcUZ-FZc6Lt!FFAQ{&xs|Vj~_Cr`?9@93o;`Q$rG?BljTtjjRumZ^&W1XNpmptjbMb#5QW3DKEYh zDf{)%(|g*6`s2`%OkpRjD1hk)Cz}it-CDK##Dqrm2SJq zMTNgAA$-p(((Kx<>73PRD%AQh)CHO|D}}b#K|=<`2~4jamL1QbtgzUGxJwAVC(T7@ zsMY_02!sM85(~{6zJ}45#G*ZgDEB_yoJ*74dJ$r3!}|b`8Z~51_H`r<^rrZT7JlDx z*xneA$458)V?S(Dc?lU@$K#Vs9BsD&yaensJH67on1t|Oj=?)=f3_-D3p9%$7jSCM z#_yN~owq{@8zWCbEP?w_-klL8MM^RwsO}pH+`z=6@n->&^DgaJn2${|5b(0wVe$i> zx!QOAfJVOrf;m8nkbi9jJSzbKq6|R?kEE@Ktxw0*>02ud*fbs&oOix4>g&Mwkh?d2 zFezD2KC!b96i>r=({W9A| zizHAUH>}+e&X-0plP5l{I-IKPXtk@ZASmXY!VA7RlbO%e>Dh>oqt zxhyyHVFF`DIcWKkCfB*Tei^Tu`8M5?#P<@h`|b56v1rlzUzRnlECWu1D*cOSpCrZ#baaWmO6KKB6`0C+DG_vAo6)1>0<=Y?BXku15GaWK z6$wa@%CDV)k2ar?!+A>FniG)cx?#Dw7LPO52f(T!va>#sWq2GSdh4aNYRZvPb@Yy) z$zX|22h-d=Nx{B-zI9vAB4V<6?_qR#b(^jEGHYrYNQdTYU&BevI^wC* ziyo9)_of;##f5lAUjuR(bL~h zAHueRC;bXIB)jy0SzE>8f+6pCXP>87fosh7^mN=lYLed<`?W&)OH1-+`8XEE{TtLq zEVK9D{umBeATtbv^nesi{!(tpSY15yKy0vXWuVlqOiCHH95ERkAv6qKzc^UiCqZ%w zol!pGvqsHYG@#~Q3yg$)M(ivKJ22$5o;|k2`w>^U8$_*z6uteW`jFXhv-cyBL{DZd zFuS&4S2!w>?x&%5LCP5i)2$IaiPwABA8T%rnVC+VV6fgmvGf5FIAQhy`7o3&7+uLo z8CEWfbyM9s4UtvYhT$r${8rBTcm9_?x>k_twNo#o{Z4y?gA?YcrSbx$FR~vu6)Nag z=I9(4(xuCPWQ>;zGWNb!G6c36G*0o>-uuaWuhvA&I6@cT-9CJo^28r9TYpqeADkL< z>?1eLGU^ds@#;_qHzPAp1J13rSPPBe5S>j3xG8iRLL*9r&fMnIHaXQ7k0LgWII*b8qsB(%Q$~=T`tOTB~>uG_(xbg zZ~%8TJK)y|4ajP6P4$|1_h(UGnEu1{>9ljq($^>Zz(XZ+zvap$O?@KA*w6~)m1mXu zTVwsNF6tdasQMmoRy?p#Ag|<%!C~@g>-quvdy=5!TFH&?%2y#ObdIye(Kd?INZ+i$ z8D>Qp#&N%RC-YDjAA|Cqu)00R{Ed#MZv?-Q-P z+n0JWzAjg{yE;CVF9|nyBR=d;e}aF}>Cr;G$a0bA)VeMCl?A;wLrK<@5-+8@EC&*B zq(Ma-=z34U#rYP1Tx;c&1HYJ9%Q9vQ)<``pS)EvcAvv|A}Jfm+Y9Q3yDr-y z7qf}-w|)np0t)zh2@lAsDNg(pQw8ePY$9ObQ?5Kx=esVHx6CaT!lgHQaH)$;7?z;e zXlOjRf+Y2qH6z3GNCMQu<9?!8nMdI;6ccIobtWfM*w5L%mT}$beDBcST8VcA37pyg zF*2|K2^YvI_gV=L*io?ks1#Uawk(CmDK4oHOya}TyJ@?4OCV8;2?aYL`z-K@foOi) z^9pL_8R_I|0X|6i(Y(r5_b5si+ZkXsrPkAJeMO zu`OakuKP838>y-tQicO#Sril~$yB4hKC>+L5b)f1j}8tbrI7z;7T98)x% zgo61t(n+^aR$}Rv9nHT?kgt(pQ(}@ZU;zkW_|C?Uon>eQv6EwKd|ScBJl>SYuHf+j=lU z0IO*1%E$Y$lYrY?8a4g(OWJ#w+|$VEeh8;4JA+E(H0+jzu69z-+KF3N+DiUrM_9o6 ziUgP^`(=`YMa&eJ^)X@mH)RL@cx~P;VKcv-G23HcG9GbK&h9ar*_)_X_I~1dKQp)^ z;zhJi7+rxU$Cx^$2*!2MToOOZ!Ak{#MnejJnb2T044_2s=od!g*d2A-(Fxiues?ae zxIkq5NT-X42*<})tNGCqHOjVkH%FF^KGV0dgnJUeMH%Mz%*!f7eSs4)JPSlQ`*%TuNXVqT%YsAnyuxHpxN^~7@ZHK63*Ig&N=j1= zIi@qO4+D9`|5i4GRNn)KT7awb_VVQ3{MNZ+-g=DNi<~-@cST&)Eq0y_@A`)V+zGQ7 zj+b2t49y}rtbw|!RY$1+8)TRpO|R?%&e?UnUnlG?dMPXdEV@?BjhIn?j|!DJ$Oi1H z{xaRc%IM<4!{|2gk>s78uXA~^im&=3!&3X3C!zP7;)0l0lBFJOR^2uetz7Cj!IM?@ z+2USfijin@HeoL16_@xMEJP1P{hhQ2o4;eMKEi8Zg+)AqM%ls>r(G8RBC#-hd&^N$ zZ~j=kt`xolovj+JV4v3p>KqdG)r_aUjVx60{e>ziSb8K+C%-sq&Br`I@|BYR8wKEY z7|0>(I%y9B=1>~x$#K0U<<>MMo|h9eQUDna3#ZFTbdp7 z1H|fS21?;>;X6h*hQd!zyS19TePgy!*7OK^K4{gb+4nfes$DD>u@~UnlxFAg`#7@r zC&TYa-q7F5c91F;y*fbIG%l?8QeZxz8sS#J-E2xgoBrg+=T}|#KFVgM&IA^)B&-&H z%#7SQwQh^h_-5a=H^szY791$WZxrWS51`Dcaq9mG{b$cZ3kn7&`ZsbNZ2s*`oK|J` zLcg8KvUu&q<{075KLrp9F>V<+Bq|{#lWMB~GRgmqga?~NgQ`s~(_fwKhLf)jq zzh~ANGNpRS58JOc-}6#@-2GS%Ewg&!uI`a{{oezH5Cqb*x=zZ&$N{|Egtpy{BD2aG zZr46Z@s4CFn0?W!z9Nz?hf5cmr{7I&Fpb$MDe0Y)+1C5IeJ9D%3-6^Rh!gc&ISkVC zqLCZvsk{4eEviqdk2VT|C8T(t;V89~#mYy~mJzDi=wQiL1U`xQw%5NDVym0QDI(n% zj_A00r-mHa$xo-)A-qu`NAOc@VPeB%wcC#+Ml1t)fa%d+W-{0d#au)Kd%c|&hy)zx z;kqT$zSXb`_3|TUw^do1K3H!IaFD!t0)n@-rLW4b` zLhsL6cb&|FK}-g6jwNPc$*NGjv!&81R$m?x12GPTbt+m2}N5$yk+uRG4Nog->*6 zV^Gz|3cDkJkYJaE;q|D?;!|#bo4OqCtNJ@xpfwz13qFGIIq?|{Wr*=0r!O}eAK_gb^tII&?S&s!xA_NM;8^iK55r(UGW-s0-E6k^# zIS0>}eU5c3_m}4$(~OhYmZc;42OIe=kj(>ds>d&~5U|G=VKP`@&!q1a$5Xag$|l74 z4NIr&d3eTgs=8q9xjb*#*HIVYe*;~k&xcbgg2|TNh}*0=gZZU&%-b4?Q1+m^_*$xofiS?u|*gW1bKzq z#U=O_)p}unj~w_Qzc?s!9JJ{8znKn#zaoO1c<|DPFwZt{%w~Mx^BC-+Ft@;6U1zi@ z1gpJnTC6vO8jDS53T75}l)NpTYtPS?1g3-m_|nVM^gT11BJ?hMRznS0xsB{ud3Wvt zjKxcctwsc1kw4!4zpAmW5+E6GFn{uM&p}$!?&GR_pN*jx&k?b;y75@H@jj&|#VK?3 z;fU1QtKCvN>uIIQBRs?RZ;rp-3@v|#I;Y2Vd)|ecN!Z)Izi$CN|Bo%ie^yauK;X~N zJn~;SND=Y^XVZi4|LZzXzEk3-8-<}jOWAv$Gz$R90(Qlzu3Ke#M59ClVX?QnmT|Eb zs15ihJJapppYLG5NuCn^Iw~&lHrw#o4nN|MtBJ1s+!>>zNM-}1zb^3b0~*tVs8KNz ze!H|8kflM|S0m-g;nxP{nvUz)5+I znK6P_SI15;G0`2R>1z=3Vk4x^)Gs1K8^;K1?uG|1pkSSaxi4a)*~(8w?f><&E#CX+ zBTlqALy@2t#IIA;CzYkYO^U(CFu>G)VJ( z=c#WMH;Q53`d$zQI8zL{`t2;rrsW*(MW*qW6od_})%tySK-@&Zc%y8bb8}n$q4;*! zRw2$jzn!t0Yk^KLKPg{BJUN1C3ZAkij~TArzG}3)JvLA|{a-1;^MRDWiRH#WcPCvt z+udFdv%HL3=V3H&k@HWnC-o%jW4`cptZC^^9ldBtHa@YCP-UGu2#sMO9)IYKF+hFQ;BP-uD@zWX@lOG9Q})3k#z@SHfTKBmqx?n4QiODH4R_iPCc zE+4({Jrj!&c;_Fs$l{cbgwYccyT zzJx(($E;~`LOuIZJwufo8~L!DZQbg*Q(oE05`Tbu1(Q0(ePcHrrn0rC2r7nCBHnA} zFJvp|Z+6tX)ZJ)h6l!LJM9<$)Rttt7Vh3x$Pn!a8Z$T z)gFWe=ch#fo6XP&kfPv#xM|{sw>AP~k0K>*+;H6^9zfbMfeteu;Xl0-Jlff$oi7w> z(D9_$P{7)YVq8T&{ZlFTBC_0PF6#H;!2P7aq>}p?QTN+mg;jB#J-g_0ijpE@NqAH^ z90|x|{ z8(Mh(r-p)kg?Yz?=PlE8_%pG6#v{2fa*x205p?+uO63DG2)^O^ET>-B)J!P&P&j9I19bSBgvR_K(sm0A@rfi{w#nh}))vqeSXf!|z7@E%g9)0JpVUht zGEzV+CPlKrLlqqoY92Va7ry?{mh4SrY^AQx#blAftTmnbzcGlpVh{`_l78YX1f}PU zx~!b~`DU5Um=DjAjd$$Cl|)R#LEOJclskBuVzCm$hJDa6~`7P1O zw&~H#Z>Y`7bVmAnPYa>*v7%?_+4cetAo|*R6|( z$vIP6`&D_{>x&by38Ng-HAdq+MsxD4US$xiWr>(_cZxi>e9CI zHJT15CT}l_d8N*oHig$2%iIV;a%@~4asIoC$w+xgu-W zxKabE-X31;0!8HhjZzNZK(+;>0>{_E++PBZg%BtF5GRSNlA=lK&B2leIEIK2F=^JVIvF3^!Xn4Te~J9rwi2qg+>RCCMe)9V-P zo>CFOWbjB;VLYjco6dcLLGOude%L$}Y#4OJ>zUX@21OyGo zC4VqfT{c9}?U_Ij5V;ase=K>EHs=OjIqiXP#xt-8G0-B`pSTNAl7e*3wpObF)-Cvx zpa=C%0vxQ96GivI_R4GK{OM32mX74{D^Xq@7T7`}-Qcu1$UOR){?uf=*yxC;ZtN!+ zVd7F7$|RVAl-Zjg$ATJyP12ha+L9*olhz z+~(c+yVn1zD)^<&r5zYPI)B0mU%c{#xKvx;>hnZ z+TD=XbVM8Tw1n@aDbek{+mzD{xs&n1Px6gkiFbZvaTqRpxkitF=1|aZTYuYld^_K{0?BNKx`X9QRGHpYpWGO564kp$Qe+We8%Y{Dkf^Yx{stgaoebD%cBly?FUW z`RkS& zU?&rtj#`xZ56gYyK{E-=r#N*k?+aZY8l$rElo_+m)-2HEi0#RJv;LT-ur;R;vXulp zM7pt3N?MR+bU3x})+meh+~U-^ny9-<8M3feldZiYFyFkGSNX43S&$Lr6-Z>M$iZ^s|mB%_MVFJ%Y|;&=bA82SCsc@gFGGb_a)xwDz&lONN!DQjp?&>{UWYF zYZzFb&(Qp)|2(g6`nTc;dTDpj%ns?}im%2*t`U}Fz>VY&xJtcB=Sv$IMkDW#)*KOS zp7uh~YP;=I-Wa8=$gdkv<4RkSroJBRkkiv8p!rG*^|{puIecxQ%aPV;M#Kk;BdPvH z^Jk_~L_`hqbwjA}>*XPp`Z%Nqhjg#rH?;JR>xQI@wq0u5Bn*gGy}z`c9(&*V_VOJd znt9*rF&&AcwMETQg0lauKo^!ft0o_hC4KwSvs}!RK7ELv)Dt5{C{C=!qJyDbb$Lcx zz{QF@Er(b^7>KUH6S^yD7;_BfO28ZBMU(${>>tASf9V-`9ps`tr+t^0Ff8l%+#B%4 z_sejEZi4TkdVaBXCW8A^RxM>|<%0VjMrq8%^mGZ`BHhr2iadLW&e|5eIRbz2-e_LV z^Uny|&nuCdr25eAHVpJ*2CLO;SNuYa?_&jjNYVb^E8Gn>ox6Q2-6NVjSRtRG+_>9K zERjdiiFNdYF_zkC#OY-(3oGVNA4Y#U^c~L zhpij)#JbJAF2Cc|E7W;>c|(Udz}CwrHCSxqu% z>dGQ0`drQkA7BkRAt8_yXnX2Q{DS2lZzx%S=AVHT@am-kf2)9S2vG}>iA$T%wIYkt%ONKeKH{VPJ4$H$5lXG zns4o%_<0-_`A1^P)rQ)6MYNeU zrsb;G%Td%lrfOfz&smltQU>*iQzikNL}XaGwOLTKJuH)P9fi{ zU(y!Kk)q4N*>>zU8SJsfG=uO-Z?S_{ECvdF z)8}U_r~cLBukRV~J?GpMbk#7vkaTlKdafB@zoZ?F0{imp7mbIuuSHq^2L zB=b5dlIn25#pN@8h1az$<`?5*W5iXSEHw;AxKHDqX`g0Y=& zWRQb1qt88ad53U+)l*X*rhv=ok@xs2>MvOUsNlU+@YPOv;y=GCIQBDf6-`El$(lX+ zx{xJ!vvj-|n^gj*x*2T*bN;3B_;Q~}nVN)H?nCk|1%}}h^n?`&B>L)S&Uec*KcD6m z`3yd^-IsKa=+(x_kg7n2%Zf4>7B9Jd+sSQQ&lU264PlGVBNL+*!Z4>4xz4?F z$2M+iYI>QR_U>!HtJ78*y_X~J5&ewND%K=|X*cmgNV9UDzO(suR-zLM(&C^vgW$>S zrjY(Tu>j&pU#wzI_)$YyxL<_>tS=OcAeRehp5;%y_+o=7zt9};MAvAv_E&tfC;edF zaEmR_M+~-Xc76V_Fg9fuUaTyPEe`l>X3@*ATu6_>Ezgh+Uajs}RnBn__dmfsDs!4%H(OH9YiLJvyHXCC(0-;>5%;d6+Fq-h z0&)gjdvl{G9v7O~{@R9`zpM*#PerFQ2m76dvj+CUdxzs#GxsjPPl^all$`xNIZE8Q z_+R}pX(u}PZTm^Xus=AN--w2IIM61qDYbX)r`e9QHn}i==H%>AF!QZA)?}d7s>P?j zb=8~BgcgSX;8Hk&lpXr343&l5psdZjhREhUb*$$WHlpE-La{fP%tJ-vP1rwE2i!lD z)FFVQ)*&U*<~5@-_z+!m#`S`!XO#;(u`eO|BaQT5uu5Vo19g7T}r zdi`Jc^r|7_FawFjKnjb0@T%GqU5|4&bpaqh=WJx5JQoi__7Lq9@R1{}8 z2QC1hCGHfgQ`sSE`YMEjlXY-v>_g0X*-uhJOjP-lCyjG3i6x=c#+{5RYw_;xi)i~& z(X4^Vi{ymIxHgzxbdF_0y;3Dy=@Yx?49`=`Y~RH0$2~X}S8cRR#A+9UwSu!Z3V9sG@Vmi!Gf!<3h zN0O~a}8KcIz@ON0_cnNqg|YX@#=%S`2p=IDi0dLks(V@T+P0pP8$O%DIfNVK*oO z60jJr+*~^AflOiW*=CSqWI0fhCNWH`N+dr`sKZgRqH^_eB9WVT51DiYqP1_PE{!Is zdonR<>L3XIM+S$#v}n?mDZtw@D}V7PLeEvcst^aBTWHK_1j?tLO95DMeylS0EI|GG zX06Sma=f_8;?fU7IF3;08|m}-;Lz7C?b$(Kqd=G3+M!ZBBX(*~7gI96uq9_u-V5+$ zQ5`20*dl~h1+NH-bfm@}<=!SzVeKS8Bm=LWm&&Z^SQTh4=4gky+DaS{O zqxBGzy|abxJ233Qd%wzr35;CoWyUzvG-BOXo9h~QR9J-?`^12M>ZEqt=WRZ7`Xg^s zgA~^FO|7c9iBnIL?If1oHUv+RnGO~5ZZu5e5#H9v8&w~%xUnv2cGZzu_flr~s;fVn zKYlAk$ky!=CfB6YxJ+jK>9^ED*ar&?&a6QGt5*@fij=vsw5N*slL#cuu(Plqm-zBp ztHvDpC*eEK%-XHvZzAwbZCheSX{i3mhqg04K21w^K5RuttWWvg3J zDckzMQhd`^lt-&8QK7idPWJl?K@oQb_OD%MdS*VHd(Y#0e!t&6x%cF9CpY=0h817L zGmNFoso8PD&W0lN)F?S8FxeR<=Q&(RY@7xq* zm%XDuxi(YRug}Z3YPS9kZ^uJ(9Jr@9cnYcxr*BGYj(qlMS*x)zo+bEovaRP;!@Jh{ z*T%8>q^W5M3z-v(3*UQnCUW-gEx7V?%XF*VHY{bI+j6~Kyn|l-88>4tFZ8Y7K6vj+vGm&mZI5qsD0*!bf%of|rEF~z z_1m;xF6Ue{YT>T`x|H!h*r4N`<(BGli`!`ZDBt!{$`)RRX?3=!_3E1Q%S^7{{xP}S z>`vn6{OwnQy}Er&DnGHE=W}A=S}APC6B8eeoJ=+C4x7C~ihQe&8giG|)#sEwyu=Fc zuG-josd9N6_|#Hab$Dh)&C;TH=Vobbbcs z=e1{*k)`He{y459hmfy1Mor+k?l4X7t$keQFUK{GMh`|QWtBt>&yYzy(-tXo{&f0je1L^J+uQr2 zMz76tc7NiVF_n4vH|0};+GJ>NbxX-Z%i zozgQuh~13tP4xHVEPLO+Ej!2EI#hOZOV6XW3ajOu+WeNheQnJ*^A}sZ70;aXvuAPul z(_24vzMi9AOHuq1UrxHS@CM7|$XSWf#aAxbw$a5@et4x{K}BxAv)NC3{wXdu(BFBN zEYZ7aFt$PFCt%7>x*w?ey-S~lM0Kbh*3aQ~cKLJ~$DR1@++SMfYdPi{D{L0cHo6_Y zwDwT$nuG;b%5SP=QO65r1}^-^j3xH%(bGTnJeQKam#r;L%&)Vad)%jviytWWY8m6E z`13C$)9Aa<9#%=EIxHIc3fFZR`>q+Xj#rp|s(t%Xt1v6f!?p8+-c^40Ei>_KsAGY9 zjmx|+@#mtXEz0U|R{uTrcJx*E!N5h$(`DKnl`97#wGHmHv#)4>WtmiQ(K)#~(Y^Ao zSrht~&+N?|J2pd?Ox*&8(dUaJBV%EmNE|B^ARm!5apjp5#jvm>98vo64k})%WEj_x zZC~BSzq0i*@%o+hs0xs*SB;4{Jx^*ij5|7w8s|Tat0QF?Emu`X%MgJi23zJKq8N#) zL}e-I;(D&q($f+P!g;9Uhy|m4cSai_v+BI6=et6IXoFgVq1QkSZ&SXSUJK>Hix7xH zsEuv~-U}3p4bxb$N_3>zmV%)=a{*pHM4geS-eBVf5oc&yH!?=T7hyX;MiMi8K&Xw3 z-hG9f(nw8JfsPbz)2$AI(km^7ibwoqE0x%@gX)JY0b`}S%e)#6hM zecGjZl@{{<_j;TWRmP6j-Zx$||Hg{{f9wBPdcW5X&Hw+^=VA2m9KHX#AD`j4zV3dE zW&h~&%uD;`I7bK5i3kbjSQR*btIoUkQMZ{Y)CuKUbk3Fmy56k?D?u3$gFryn)pS7p zsGUE^19a_P4S3)(hywqNkDei0cuBUBGRRPq($0s zpb2DyG&PyXNizZ@1BwsXL==I1Kz@V)>QA=Qb&~We0cn#S)sat!0O^p8G(Ksh0_sDy zkZ+_-_E7Ap9mS9IsNa6D15jNF5CUpL_R$!}0kuC0zp=<+vH;nj00+UJ0qK7aXk7A- z`ZWQHBl$wH8vxXnw58x2p!ETbOL4yr@&T1mteOFhLH=w7bnNZ{iWh0n@$CYnsUDX_ zb95gd4fxJ7L{3^{-!bqQkS{raVpk2wpHT1_CY>qXg42rbOCv0e_=F!b9#a z4pHUUWGqIm_pnCXz>A8adG|cM8$PtCoGF(?lHe4)f|Nu^l=0%lhT1Q%eSe{?-Q2nV E2E7dsK>z>% diff --git a/main.py b/main.py index 7d8eee5..a1206a8 100644 --- a/main.py +++ b/main.py @@ -1,7 +1,23 @@ +import os +import time +from ContourExctractor import ContourExtractor + +#TODO +# finden von relevanten Stellen anhand von zu findenen metriken def init(): print("startup") + footagePath = os.path.join(os.path.dirname(__file__), "./generate test footage/out.mp4") + + start = time.time() + contourExtractor = ContourExtractor(footagePath) + print("Time consumed in working: ",time.time() - start) + + contourExtractor.displayContours() + if __name__ == "__main__": - init() \ No newline at end of file + init() + +