From 554518bcca4a5c4433891e56ca415db399db08d7 Mon Sep 17 00:00:00 2001 From: minwoo <alsdndia789@ajou.ac.kr> Date: Fri, 21 May 2021 21:55:40 +0900 Subject: [PATCH] change step --- .ipynb_checkpoints/Untitled-checkpoint.ipynb | 6 ++ .../openCV_scanner-checkpoint.ipynb | 61 +++++++++--------- Untitled.ipynb | 32 +++++++++ modified/receipt2.jpg | Bin 8179 -> 7307 bytes modified/tilted receipt.jpg | Bin 9701 -> 8942 bytes openCV_scanner.ipynb | 61 +++++++++--------- images/receipt.jpg => receipt.jpg | Bin 7 files changed, 98 insertions(+), 62 deletions(-) create mode 100644 .ipynb_checkpoints/Untitled-checkpoint.ipynb create mode 100644 Untitled.ipynb rename images/receipt.jpg => receipt.jpg (100%) diff --git a/.ipynb_checkpoints/Untitled-checkpoint.ipynb b/.ipynb_checkpoints/Untitled-checkpoint.ipynb new file mode 100644 index 0000000..7fec515 --- /dev/null +++ b/.ipynb_checkpoints/Untitled-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/.ipynb_checkpoints/openCV_scanner-checkpoint.ipynb b/.ipynb_checkpoints/openCV_scanner-checkpoint.ipynb index aa6048d..313abaf 100644 --- a/.ipynb_checkpoints/openCV_scanner-checkpoint.ipynb +++ b/.ipynb_checkpoints/openCV_scanner-checkpoint.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 267, + "execution_count": 301, "metadata": { "scrolled": true }, @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": 268, + "execution_count": 302, "metadata": {}, "outputs": [], "source": [ @@ -44,7 +44,7 @@ }, { "cell_type": "code", - "execution_count": 269, + "execution_count": 303, "metadata": {}, "outputs": [], "source": [ @@ -78,7 +78,7 @@ }, { "cell_type": "code", - "execution_count": 270, + "execution_count": 304, "metadata": {}, "outputs": [], "source": [ @@ -116,7 +116,7 @@ }, { "cell_type": "code", - "execution_count": 271, + "execution_count": 305, "metadata": {}, "outputs": [], "source": [ @@ -136,7 +136,7 @@ }, { "cell_type": "code", - "execution_count": 272, + "execution_count": 306, "metadata": {}, "outputs": [], "source": [ @@ -171,7 +171,7 @@ }, { "cell_type": "code", - "execution_count": 273, + "execution_count": 307, "metadata": {}, "outputs": [], "source": [ @@ -185,7 +185,7 @@ }, { "cell_type": "code", - "execution_count": 274, + "execution_count": 308, "metadata": {}, "outputs": [], "source": [ @@ -204,7 +204,7 @@ }, { "cell_type": "code", - "execution_count": 275, + "execution_count": 309, "metadata": {}, "outputs": [], "source": [ @@ -252,7 +252,7 @@ " #print(\"max_index = \",max_index)\n", " image_fixed = image.copy()\n", " if max_index < 0:\n", - " print(\"max_index < 0 \" +i)\n", + " print(\"max_index < 0, return points \")\n", " #print(points)\n", " return points\n", "\n", @@ -308,12 +308,12 @@ }, { "cell_type": "code", - "execution_count": 276, + "execution_count": 310, "metadata": {}, "outputs": [], "source": [ "def b1event():\n", - " print(sizes)\n", + " global step\n", " if sizes == 4:\n", " cv2.namedWindow('input')\n", " cv2.setMouseCallback(\"input\", mouse_callback, 0);\n", @@ -334,12 +334,12 @@ " cv2.imshow('input', image_result)\n", " cv2.imshow('result', image_final)\n", " cv2.imwrite('./modified/' +i, image_final)\n", - " print(i + \" save final image!\")\n", + " print(i + \" i got 4 edges!!\")\n", " \n", " else:\n", " cv2.imshow('input', image)\n", " cv2.imwrite('./modified/' +i, image)\n", - " print(i + \" not yet..!\")\n", + " print(i + \" i don't got 4 edges!\")\n", " cv2.waitKey(0)\n", " cv2.destroyAllWindows()\n", " win.destroy()" @@ -347,7 +347,7 @@ }, { "cell_type": "code", - "execution_count": 277, + "execution_count": 311, "metadata": {}, "outputs": [], "source": [ @@ -356,11 +356,11 @@ " image_final = transform(image, points)\n", " cv2.imshow('result', image_final)\n", " cv2.imwrite('./modified/' +i, image_final)\n", - " print(i + \" save thresh!\")\n", + " print(i + \" i got 4 edges!!/no button\")\n", " else:\n", " cv2.imshow('input', image)\n", " cv2.imwrite('./modified/' +i, image)\n", - " print(i + \" not yet..!\")\n", + " print(i + \" i don't got 4 edges!/no button\")\n", " cv2.waitKey(0)\n", " cv2.destroyAllWindows()\n", " win.destroy()" @@ -368,27 +368,26 @@ }, { "cell_type": "code", - "execution_count": 278, + "execution_count": 312, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "max_index < 0 document.jpg\n", + "max_index < 0, return points \n", "size 0\n", - "0\n", - "document.jpg not yet..!\n", - "max_index < 0 receipt2.jpg\n", - "size 0\n", - "0\n", - "receipt2.jpg not yet..!\n", + "document.jpg i don't got 4 edges!\n", + "len of max_contour 5\n", + "size 4\n", + "[19. 70.] [121. 24.] [199. 157.] [106. 213.]\n", + "89.0 145.0 356.0 319.0\n", + "receipt2.jpg i got 4 edges!!\n", "len of max_contour 8\n", "size 4\n", - "4\n", - "[13. 48.] [149. 27.] [170. 218.] [ 36. 238.]\n", - "61.0 176.0 388.0 274.0\n", - "tilted receipt.jpg save final image!\n" + "[18. 45.] [138. 32.] [158. 211.] [ 39. 225.]\n", + "63.0 170.0 369.0 264.0\n", + "tilted receipt.jpg i got 4 edges!!\n" ] } ], @@ -484,7 +483,7 @@ }, { "cell_type": "code", - "execution_count": 266, + "execution_count": 286, "metadata": {}, "outputs": [ { @@ -494,7 +493,7 @@ "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m<ipython-input-266-d25ce1a2f34d>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m#이미지 저장\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[0mfpdf\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mFPDF\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mPIL\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mImage\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m<ipython-input-286-0a916bbbf96e>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m#이미지 저장\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;31m##################아직 안합침################################\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[0mfpdf\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mFPDF\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mPIL\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mImage\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'fpdf'" ] } diff --git a/Untitled.ipynb b/Untitled.ipynb new file mode 100644 index 0000000..956cbd9 --- /dev/null +++ b/Untitled.ipynb @@ -0,0 +1,32 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/modified/receipt2.jpg b/modified/receipt2.jpg index fae3687cc7f737191e7f9251389ce46a77b869e4..86a073a944046fbcba804e12c7125e8d05ebd02a 100644 GIT binary patch delta 6750 zcmext-)%Wz3G;G>{Ef>`GS)x;xa1{&`|@!6+5)z!>+}4}VvJXC&0!6EdvATk<zwf| z*SkM_QdAd~u;X0eoohPl{JAn1Ul%-iGUv+tJndsy6ZNKCoie#igmJOxi{v@~N|o+v z<cL3);X2I|@<giYjOWi4%&zNB*vJH@>_~3jy*8MSU*UpU&XWtQKi<vh-FNrp=6Y{M z|5?sQ!}@AUOkS$rJ!TcaJgI=s`213vy9rnQyv6KW^=mG${+P4f_4tO>0ed`7s9EZ8 z9(Wsh;T*%Ed0BUt#U49gUZ&Py@j5p8xBH{BXWaRp+}y76fitJBChX5=<Bes^mKKk< z7T)KN(mpT$qwSl=rzFAS@-`Z2#mCqCe>`4SzpG%$g8-Hy!yK7};Eb|61)6Q4;Xh|+ z_3!adbl{ivw45lOXT0;klP@yAKK~5T*5+AxV!hpuy&v0;%Jc4VUiNYpd;9f3sjfYB zK7}5i&T7O7x}-BqSh_DEd|es;teqA1S!c6i!)%3)Kg{;8Ei5mVyu9XlrJin&?_qDL z6&&l9dev{MJg6YBtig7pBg6K@Yx5=Ue&%y{ALpL?J0W9M`OVai{)f+|dvDn}p`%pn zWDxV5rrpL<n2Sa4bnQ1bcp1yO{jK4L%TXWB{%7cZuy<dq)wzs|DXDJdpX&k+if-4q zCoSEeV{o|b0rNgB&a?WClVfK5c>3YsV$XM5zi$@uQR1%5tXHZz%G~(f!;)vY<uU1| zY=560jSut%V%26Yt(bMK`p)#<+~S^QD;4GlSU2~_1hAd8aXDib<?+P3LB%z2o@dOb zdZ~>f>5@zhiXJB{62redI20;z@_AQ+>+R1xze0O0gQVx1esZ(oyTbVVKIfXNrMgui zHEV8lDb}6clD@uf`RDp|lY+#R%W6MH#PhCwxOKx7^?t5PuZjg?zAz-K%lcXV(W<P; zez3XLZrVTn%a<PA3hjC(zNa@%J?VfZ%ZH*K!|P8iUt}<QhD<vtTNP-#Bjbh^^UlKa zYwhkuXHN4-oT?&ty6sb}ha2-kg@02uwb;)%$USQ?&P(V#V|<>gQ?P7B{SAXXlaFt= zf9xkFpnE!oTf%wjvG=OwCCck;Iscqr8)wMLA^0hxVaIcI6SvlVm5it7C{4UmDqDXp zgIPH8gLuOq$D;kW{;^%wOBRz)cAa##tmE99W8y4Y&zuSt@bHwcsobCbzOA?-?ek%= zDA{+jGgpWhOY;VK#Bv!MM4ZTd)lk1@4wLBiiQ8qu(@vdk3hDW>Z1#liHn;ODO&AYX z%>P#MLA}dl@q)W?S%ncNWMXc)T8ZokmQhe?Sy9Hg_EG)bN#X284_)H9{xhW8bJr++ zOugRmM{vbi*|iVTc3gheY%}-A-v?TLJniYHKdpKruW{gu$CECP56ho@F>z#`euqDb zp?)S~xn9-eFcF3wA~)7PIiM}6yv+U6%7s1UA`Gk&lB=sKj;!8l<X81qi(g0hXw=2; zrZ4#=9~2lm$oMzw<|$sBm7YH<`e&-L$~1-#c5_O8{kq<#e(*ihkM75|=euf@AOBdl zb;?Kf+v~Qx-du1o&oggvYX9>C3?~Hl>|I>CLPd6Az4mPzOZJ;36`LY<@-UoZV3~Yt zXRq;tQ!lMPRW$p23|q4Cpzek3TXqSamJ#&3eb3@Lv%K-PYe{byZy);TAR*73W265d z);)6C`$uZcWxKAedhYL?Fwx`muE>4qNjAsRrgqw!c_eWgCRNMJ{wNOosIn_=<-^@4 z)Bl~glD2b}w5~(_5xvE~MOHsG)@J>==ZQt_fdttFZ&M$Y-oL3@dY<>C6ib}_-c}Rs z<oq<pDLM;&rgVBv7LqwCd5(jp>xf~f==BQqhtn2+_|Nd*&>y2q%eU^|(RC@iy88B2 zg}c_80iQNlf8VIABIIxLc^1RT4`wqz_WS*awOjZ|d-wadg1IJ_Uh>x46yLoaBXVoo z2fxcAQ!2ZT>p7@y@(A7#^&?sQsJoo>{A0ITFK(Ufe?>mL>A7FTlkVdAo0rU6)6i;h zpv*0S;n2MP2hUqf?O7_g{V$kyOo+X0(r@Kn@X3j%?_8Mff!rRkL(AAM?09=VQY5pf zomcM76m`bx0_#T&QrmV_3oC1#tXE8m{I?+e<B7A{FTWMJZgDccaruTgbG48IgYXMB z%@@1FB^U5TAOE$aj`w14uy@AOY1KD!a~Ds0nB=UpPO#kap}XCaISiZ%;g%2j`*!Jf zeZ5_)bl+{l(tC}6SLfPJdG!2@!-?G@Zk)xRn<scEPn>sea%pB}E#ubxTe=>JDeN(> zKO!s5uB>&S`Nvg>Khh6XXU^SYnZz=2k=N-QW+S~jdhU*&)R})TYOuU7P!oR1Mt{|- zX;RbLSL~^(ZNHUf_$K9(vu37D^Czvv(@sx3U?I0F>irR3{=@&cw|;!LDo&ewOXH(p z#?NJ^!t)-^QDZ!Lhs|yW>#pku*SFtO@P1vJf7q-(XV;kxXIHe&^Qd{|lamzMc>YxP zr-_Fe+@qeDp6`kixwa>AZ3TbC2iCv0e`MNkS(_4>oLs89%2~NV^5DH?e$RKDyX4A{ zUt#}v|Dk%BA2V&FAFh|U9rJ2!PWr#|(k%;_jvbkrz;R%j%@dw{$%9I}&l-sC;Mp`q zK}Mi3&hx|LBme6eIJWlp%xdj#E%8kL$Wzv9diMc?f^l@D#|LXghE2y+Sln->q}?*l zv)j0wr7iYIpK;@@2FuqL)2uTBoKDS851xGc!>X#|T}l`BI4;T*s;GLFye8gsNx0_r z6rK&fmX(YOZ*R+8+^%k4!8plGH|WtLi9?&10^P2^|MXn$&ZCWc>b+P0lr#EpZ?aq~ z@6|1zV@_;0j@cw#-gmb{V@cw6X06H1&3)DlJZq~TA3q$={m1LFonS@R-~HQ5EqHdN zF4(S@>bq$>f5YO8&cnhDoPp;uA3vUd*up2QYTn*&mZ_H(T$PgE9k2U%+r*R-y@G-t zy?y5vFi$X!yl1xW!<_#N;>sWD*Pd^BHtUnFN{sU=*NTlBCMNB=wK$WHgYot=<`u^t zN$}fTTmB>9pV*~8{_8UDX<Tlp%3U`#ed)TjyHDum?-L6;B72bI{g!=3MlB8e3rg08 zdwpb^D&Miid+MZ98HW!&vTf-zo~j_=c*62!f6UbmuU(xYO&kxpp6nB^ICehps;PWE zU({=>xwl_Dx+OjH{nOUQVvhM0w-|r6be|01_`O$qLrK!ngRhE@GH5s*c<^Xq&4IFs zKQ2#gkT7}05U@bc|DkWW;KHIc1;(wCYEvdv*skO(b)TrB-IDm#LT+!>1?HJcBkv|} zn{aG7|G9!0Ctlw-b^T+!;B>9tl7G@0XTAH%VlG~<&m=yJNz%)h&uilC<)RPw8C|W< zJgfe#<)coO=>86U8=YUKlOyg$s8s7ROf#JuW*%nb6S8@o;oR2Z=Gec_`|1=j>sg;& z*R|2FtbbG;YnYO2XPpoidD`p@liPFd<~A*>^t=KFt7!lBdHff@KKmHk)}NbOuj8aX z>z-}P0uICaD}7~p{<VuQZM$-0Y2IQzHjm>gk7s?H-%>AYr&_W9ky-l#e~BNtiPQcw zIQ~vODV2R>+B@C1_Z*%sNm~2dQ>n#<u{G#-<m(%0y~mU$_B~0S*u%iTl)+(RPW(g; zX6B_fk&f0&CLLM&nEiB7!<2JIZtfdaF4(I1dCTnWD}EMV7PYKzadTE`K5>Whxa`jb z{4yV(AK5E>SYBrFCDVBJm&GyBFFwxZb@GUa<G5FGDSyuKje#{!WK#b8IH|j7XRi9A z<A>+g$6tALxsEIHj7hD~vs}KHPYiFya(g6ZJm!7c@kwB%(+W2Mmh?~OY?&Xuy?^8_ zfAICv`J54+Yg#_6kc#Uq%&wQdeY)<`CcU4M#vAf@UdgK`9FYC^kNc17^*`w!wRoA2 z-sjcba^l?{ao(#>kK8H{QoXFjxrXQBzqi{&pRg(CJ5)9BYS;Hx$u+O}(RWXtL!~?* z@_glrquCWw(JPa-ZJ&8PJE8f>9rv~zG0lb@3Uf8=Gv+hj`SB~i&D?Bz;cK&5^|ifM z&u*Gh&|UJTqoM8e)I-K*W^W6dCmblf^h5Yi(5p?arrSwgUb=I~wn^unJ<V;%%$=iY zXc#kT{%!|H3u|{-t#z9}G(TLow`SJ1r4Mdf>L*Q%(>@YAscE-a@8f4&W_s)nZdDi9 zRy8@Olq-KysrQ<&lJmf`HIB<%d9-<4yB4+9v$^XOu(5fn%wPFz#>J^N0W4ge5Bf3- ztfro`d^u|Z|0AZU%6D8={M5K_5acLR9l+l3qx(R;aQL^GALn;`v0SkCqTU}#fz4Z{ zAK}}b_ifXnpROAwKC@fEU~V2a_4bc-r;pE*{o!oh^vC3Sxz)1yOK+(}Etq{Kdyl91 z9Fg6|3vchJ=aYD=EUBz~%1+~t($0N<m+VP>)NB4|eS68ml@(^Uv~RQTF09N^nyZqQ zdw!F~sZP5jBR7YG((P-0gggA0zU+^HoZzNwUk+FEx3`!{eb`gh<=J$iVT0kHRRW6l zCwZzb<5ZAoKNv6i@ACG2HXrWxAC+gnf9qyUCgaym)r@(!ZcM2!60TtFX*>{QF28RF z@9FS8oGteIrh4V7I>~uHm(4!3kG~@RThAq%;)mZp*6sbfe9^5J7jC_pe0;@G72{nh zx0l|L*_m`NQ1h~+^^7O_yJr{bzt8i(XKDG~LD22>cc#beOMOJm9(;Tsns`t3b5ydj z!IN1VE-PuKu{`uV5cB-?3)}j?E11vx)6b9>T6%5$SAWJ=*A4bw>&?v0%-FSl+NbTe z*>COXnDZtw>h1|oKDQ4oOyTVO;g|Pk-W5Mkwe(!;in!Px%knv+Zb#g{=PQ0Q@k;EO zq8O_U3R^NZ?hJ@9JT>`%>C}(h508k;Oa6)aW@qwY+4>a~^BuOd-FN#Ka!&Q)wz~SK zz8gDt^xg_o?9r%wCt=4B82>o`ko~RV<M)O9kKAv!mo|B8xJQ|{XP@wg79;bCH3zT1 zReG{{0?*>JtrG1wZ%^=LsER+hU#{YF?8ZHteoTMZy_(m}UUP9rlw}WFlkEY|-gRN| z1_kUA4?Y~<7WqV>O}=368#jhy{Lh;&-?)A*zFzW=^lx|9$N6FvmmluVs@feFeN$HG z_&*`nwp%xpnAIl*MVzTre{Ygg&T5gWvvu=h&iz?u`Q3gTURmK)v5cSnPk^^(+0_3G zk0SXZ&6+2FYgV%h@{D<VfboFsGt1w?G5;Bk=68twXW+Hrt$wUovQmHF3E{s&l8<}u z7q3b&Y0;=>E>KthdSLY~mR)mxiSGHebj!rMCfuqg3OI!-y<#iQ`MvpWTYYtPceQQQ zwOX}bH`TZA=sEV$ufv)7;E9Cr<pC87_<4UA{;sJ|ezgA3-S|hg{~4Oro9y_K>9BXR z=fhbUo9k5<@Xc;^Z)@#)7U~w~JV`>o{KM;Sy+1NP8Xq&a=dNFqf2L0H@|O%#@3%Im z`h-qJ%9&2s<8#8U;--g+K}ur(l!^B3{~6NuH|&%D(6{u#TH}Xe?QGN6I;%u2?Yg;A zTyVFz;qH`;40HNtKRs}}hbOsW`NRJVhyF9%Jbl<s{m1o(^312zmgYY^$$GHso2UAY zHdXf1JWsdrw5t4P*mGp^q<RO-^WFa$HpfjiKl(TOTl@YWbN^0Hv$5up>Yeq{=i~m# z3e(R{Sv^sMRh;|jB({gUC%D~j*c19NSNov39K(NxmiykH6))uF-!0YUeXAtoamo5z z;#7tR(fh0(Hp!Fc9+y89zeT>SG`_J)ZOJUQ?a9ku*GcZ3|F&$_n()oh(iNvo>o@sC zyqo?sNwR@iX6nHs{~6frWd4|bc;8a`UNYkN%Dso2%a{LX`p*!)we54z3>UUyL#Nc- zg$70^+zuJBJz|{tV14U9vFVTO58wPJUsJYePxqm3!dtKP76nCaHJN8A^yov8#I#9{ za~CMdte0Tg`^u8_j5g1{qzUH6MsIcQH1T=XzwG*X_+iu^qaT%zv+D&awnu-|@2v3@ z-F>urbw#&VSM_S`O4eQPjE>w^>~c2U%+kYqLx+u-@r&2O2aXyCCpO+~J^tE(zq6&{ z#GjRsQyX=A%Fh~4D4S5lw`JArMt1wT3<dkNez4{~nlF?kHTQj|oV2WSz}CIHHg4}( zGwHO%Ho5xrIXx2mdN+d^zF1f?Xna2F{!MH5yl0Q<e?(g~>0WJJyX8>j-ImOBqu8iZ z4b%R<@|9`X{ElTuj#%#D7Xp_iFxcq%`+0s{GhgDz_rvnMTc&)p?=Dr$%+OcZ9y!xf zE@zWYVRK)@ZVlawZV?ZdGMJyQs88A7BURHR-7lCKK3PSqzCL?**UK>PlMj7uOcFS3 zc4utN)n+}+e{UuC4wJQC{M+BO&0QS%^5V-4QL1~lWXkT{;X9GlVPSX%L$bu<=Htww z;fL!*Y}g;m*7@^i%v0<7^z53LvDUFS0v(HLcmAIJ&6`_<WkY1h#Iv5&AN3!8n_5}D z@Kv4GrY*D1Ki_k2q0NH&P_L&Qhn|<D@P9kLmLZFEk^xJQQBT5xm;IkI8O}2;*!nTP zwN!g@`m)z$mplYxj;IHnSaUR7*(RmQZn3ET?UD&m>AM`lwRb)Z4YiQ@`)<#M=NCR+ zxWKyN=2QoD`>3^RUq+>EU3@3=*4r)SW|MF22`}3&$TV4*$7oKO(h_sQeR1`cj}@5Q zF3)KwD7<d5aGB0*$Jf_I7(XvRdcHG`{qNj8l@HF}{B-=GU*mrUj@o;TwX(gtPCnhc zXO)URiy_OgYcVPBn2pkVciQehAbp>u;`CwTh=>=nM3>$vj&=C9t8UMAgS)y%41LbT zPB$`kS9*8u5w{^r8|z;Az>7BatKy@wX4UU&&nzxZ-4hk#o7eXtFKA83u1TB{>?|oM zGS5~={3t(MRU>#j_2KVqhs`q`w{PvTJ?F@C!>`EAQr-Rv^K*Hj?D=ea<T>ZZ{%|f! z-1yP<+}upveLD*aW#)MuG&wrAA))KSB9W*5Q~SC??dEOmv%cziW@F-_u+B%fd*q5Z z)NKmu|1-Q^vp4;qoZv^kX}io;KRm5H+tpZf^R&A@l@nzDGw7N19__S|d2;QDo7;r; zqyj&?xhoh0B?El**d8A@Rhm+I)bSZ-wBjb=#;(u_ZU-jLVwict^}u@GA18l1|IyxY zeQSPGo&ATcZ*Ska?~uIJyTxNG?;_3#ZAGg>ymd4VeArok&qG4}cAUeX=A)JW8II5P z&Xs@oZ~3FQ%n#dUK9WtlE13I6FZlFtk7*e}E_xkjj8^S8v(Q*FL0o}(;)nF+I<6Y2 z4}SAMo_E`EZQ*5;zjoHyzGl_W3MP4d`*yTr!V3OfqE5%T432!BW^@1Odfq<*ANBj+ zeSQ62^3^T3ooe%DJ-AVSR_pH+?n0S~D_G3m>k7IZ;!7!5VmvATkHwFN58roJotyfh zKH^7yYU1LoLKCrF9+M*Sk_By#tXAk@eCo26qi3U5Sd9GCnPHp$ng2Nb;C{nC&Arn* z_esXxyT80mrL%N%eW^?@`^{xLD}0Yn6J+@0seI;+XU7U1rVH#r+v@pC+v~5hp6^}0 z?b_DnOo9Hu?Xwt@Rm^_6+*G`?C)!fI@b{7ePxW)__6h!|KK^U!{vI2{-%c6d!{rpV z`8wrq^4xap+qswe$}KAopD_9~m1mQl)2;~)x2pQZD}o=MI+$Dfn4dALoOjKO>(jSO z-G1%(ypJQXbc&>E$jt5TCI1=J?B0bm*7umJKdNV_J8@6$<I(m8-L1UUzPmQ<?7Mg7 z7R%?vwzR3OvugGgJ1YC#*GX9Spvyuvf_c>k`!+qrADs_->kdDvZ(sLd$G+XOxUJ&_ z&K#2F)Jv^bl9(f?Ciu|zfnJo^!%zmf{|t*?{|fKW*?05d*|<Z$L}SFZ?ucYaSmkl5 z#NthT@sIE`^}Or%v1jg6zW68h;eUqiTld!en&Q(YSz}xHWb2-d2LfhH5#)5%`uEAT zi09G@u2p5f-4D!f$^Q`VvhTxxhCeEv^)lBxF1Bvy6XsG8Jl6fG)H+<f!SVs?0S4K< zSJtha<o+;l&711KuI`nV0seJYL-pe9_Y`R``>K60)v7;x+%MZsyR~qtX%_RulMC3L zi#9d9IM94TX_EHRX|_+Lm90<2G<JEvZ<QBT4!Wh^^<^o8QOB}PMb-}{Nyz7ap4e5x z{@eLxbp2xec0CRYZRr!c`<3_m8UCwc$Tzv|cFFMTvL%gkR?1hFZJ)(=iBsOsxNmt+ zy6B0x+jSRbRs8%{FLf)XMbX=JWy-|91OMWm_oV)q|IysVJvaZsy;Wz$TpHC*#C)9p z{8#k__C+RPjE{CToii<sS$T`^&V(cUjuWh^!s50+l;`--tI{3yVcPVH$%~E`OfOsU z$W`#9BunnkO_O#!`BMJx<2wF-QptXsd!k?cXW-vDJFT}aVcO9h=P%!@pDq73{KF=R z+i#~&|ETxjjOyhRsj~kW&i`bPJ@kYB;KY}wm#%MpQ+Fmey&-yrIH$<{*UHBj6n|}B z$#6~U5AToQET*FmqQjV;>WMiWT_UWl%&v3O{?pm;b!O`>PdplU`9DME{-*CAmDRgH zcpkf{kPv=B>gIoj*1aG0xt)o#xU9lfZ`bymC4J(-1$;&S8NLPl(8#}(YkYX~%QyOo z`%^dUn{`(z<C2O{Zg10{mrU9dM7AB^cZ}<N=A|5(rW5M){Donp!5`NTre9agyMIh7 zS&z|TXUwCeaylR8e0c9K5|McPl<TeHUl&+sPx`d2`0`SBmAtNHjtzHhUoDB#_^`?0 zv-hL=YTu1>*s_->e0}`-sPd2fhi(;a-G8MfJpIY3vO}M|mL$K@V0N?76fL{^<Lj?5 z;UAX|dKa9qiClhiBe!Vul@lwste5-|AE1>}<DIT)$(l6RlO=$C^Ng!=>@DTm=CHA8 zENT#(J|TqX`Cd2OWW|>G7D+`C>HS_B3%EZ2sCS$5%(q_e?k0nBCw}><iCOpA|H-_{ z2>X0UELGN{b|ZsZ^+i{P!h33ed;bZ%e%bA-5xwt$XW)zMu50@r%!}uL?mpXlPesJO zXmtgUx?TSn{s<p?bW-Tm>Db`5Lk%}h*zIMndSc`JTfE}4*Um2X>sJ>s?8#DNmR~Cp zz^=Rc-`P5|OH2Iof6QY0!uGhS-oEP4m3{mbug<ab#BX+%7Mf^#?P*Ze17TMY#<N** vEFb-*7d|syaKL(_e&EY%yU*Xe?{{@=zG~l-IlB$-J}a<z*`=|7|Nl(@3WN`e delta 7629 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 b#TOlTT{twa5Sp4KLEa8qIZmXQ{QsK(5|2Nd diff --git a/modified/tilted receipt.jpg b/modified/tilted receipt.jpg index b736745a4852da42d9148b5174298aec54292ab1..2e8bc76c5dbd58373f61493124133ffbe3240f77 100644 GIT binary patch delta 8398 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 Xa<OGjb%&UFdQUu&33L@<{C^VwMu~Nz delta 9163 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 diff --git a/openCV_scanner.ipynb b/openCV_scanner.ipynb index aa6048d..313abaf 100644 --- a/openCV_scanner.ipynb +++ b/openCV_scanner.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 267, + "execution_count": 301, "metadata": { "scrolled": true }, @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": 268, + "execution_count": 302, "metadata": {}, "outputs": [], "source": [ @@ -44,7 +44,7 @@ }, { "cell_type": "code", - "execution_count": 269, + "execution_count": 303, "metadata": {}, "outputs": [], "source": [ @@ -78,7 +78,7 @@ }, { "cell_type": "code", - "execution_count": 270, + "execution_count": 304, "metadata": {}, "outputs": [], "source": [ @@ -116,7 +116,7 @@ }, { "cell_type": "code", - "execution_count": 271, + "execution_count": 305, "metadata": {}, "outputs": [], "source": [ @@ -136,7 +136,7 @@ }, { "cell_type": "code", - "execution_count": 272, + "execution_count": 306, "metadata": {}, "outputs": [], "source": [ @@ -171,7 +171,7 @@ }, { "cell_type": "code", - "execution_count": 273, + "execution_count": 307, "metadata": {}, "outputs": [], "source": [ @@ -185,7 +185,7 @@ }, { "cell_type": "code", - "execution_count": 274, + "execution_count": 308, "metadata": {}, "outputs": [], "source": [ @@ -204,7 +204,7 @@ }, { "cell_type": "code", - "execution_count": 275, + "execution_count": 309, "metadata": {}, "outputs": [], "source": [ @@ -252,7 +252,7 @@ " #print(\"max_index = \",max_index)\n", " image_fixed = image.copy()\n", " if max_index < 0:\n", - " print(\"max_index < 0 \" +i)\n", + " print(\"max_index < 0, return points \")\n", " #print(points)\n", " return points\n", "\n", @@ -308,12 +308,12 @@ }, { "cell_type": "code", - "execution_count": 276, + "execution_count": 310, "metadata": {}, "outputs": [], "source": [ "def b1event():\n", - " print(sizes)\n", + " global step\n", " if sizes == 4:\n", " cv2.namedWindow('input')\n", " cv2.setMouseCallback(\"input\", mouse_callback, 0);\n", @@ -334,12 +334,12 @@ " cv2.imshow('input', image_result)\n", " cv2.imshow('result', image_final)\n", " cv2.imwrite('./modified/' +i, image_final)\n", - " print(i + \" save final image!\")\n", + " print(i + \" i got 4 edges!!\")\n", " \n", " else:\n", " cv2.imshow('input', image)\n", " cv2.imwrite('./modified/' +i, image)\n", - " print(i + \" not yet..!\")\n", + " print(i + \" i don't got 4 edges!\")\n", " cv2.waitKey(0)\n", " cv2.destroyAllWindows()\n", " win.destroy()" @@ -347,7 +347,7 @@ }, { "cell_type": "code", - "execution_count": 277, + "execution_count": 311, "metadata": {}, "outputs": [], "source": [ @@ -356,11 +356,11 @@ " image_final = transform(image, points)\n", " cv2.imshow('result', image_final)\n", " cv2.imwrite('./modified/' +i, image_final)\n", - " print(i + \" save thresh!\")\n", + " print(i + \" i got 4 edges!!/no button\")\n", " else:\n", " cv2.imshow('input', image)\n", " cv2.imwrite('./modified/' +i, image)\n", - " print(i + \" not yet..!\")\n", + " print(i + \" i don't got 4 edges!/no button\")\n", " cv2.waitKey(0)\n", " cv2.destroyAllWindows()\n", " win.destroy()" @@ -368,27 +368,26 @@ }, { "cell_type": "code", - "execution_count": 278, + "execution_count": 312, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "max_index < 0 document.jpg\n", + "max_index < 0, return points \n", "size 0\n", - "0\n", - "document.jpg not yet..!\n", - "max_index < 0 receipt2.jpg\n", - "size 0\n", - "0\n", - "receipt2.jpg not yet..!\n", + "document.jpg i don't got 4 edges!\n", + "len of max_contour 5\n", + "size 4\n", + "[19. 70.] [121. 24.] [199. 157.] [106. 213.]\n", + "89.0 145.0 356.0 319.0\n", + "receipt2.jpg i got 4 edges!!\n", "len of max_contour 8\n", "size 4\n", - "4\n", - "[13. 48.] [149. 27.] [170. 218.] [ 36. 238.]\n", - "61.0 176.0 388.0 274.0\n", - "tilted receipt.jpg save final image!\n" + "[18. 45.] [138. 32.] [158. 211.] [ 39. 225.]\n", + "63.0 170.0 369.0 264.0\n", + "tilted receipt.jpg i got 4 edges!!\n" ] } ], @@ -484,7 +483,7 @@ }, { "cell_type": "code", - "execution_count": 266, + "execution_count": 286, "metadata": {}, "outputs": [ { @@ -494,7 +493,7 @@ "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m<ipython-input-266-d25ce1a2f34d>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m#이미지 저장\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[0mfpdf\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mFPDF\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mPIL\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mImage\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m<ipython-input-286-0a916bbbf96e>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m#이미지 저장\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;31m##################아직 안합침################################\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[0mfpdf\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mFPDF\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mPIL\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mImage\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'fpdf'" ] } diff --git a/images/receipt.jpg b/receipt.jpg similarity index 100% rename from images/receipt.jpg rename to receipt.jpg -- GitLab