From 11609a19271e7e23edf597a14b56ea459c865012 Mon Sep 17 00:00:00 2001 From: BongHoe Koo <42884297+gellston@users.noreply.github.com> Date: Wed, 19 Jan 2022 11:11:31 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=EB=9F=AC=EB=A6=AC?= =?UTF-8?q?=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FastROI/ConsoleExample/ConsoleExample1.cpp | 13 +++++++++++-- FastROI/lib/Debug/calPoint.h | 21 +++++++++++++++++++++ FastROI/lib/Debug/fastROI.dll | Bin 0 -> 309760 bytes FastROI/lib/Debug/fastROI.lib | Bin 0 -> 2636 bytes FastROI/lib/Debug/fastRect.h | 19 +++++++++++++++++++ FastROI/lib/Debug/macro.h | 20 ++++++++++++++++++++ FastROI/lib/Release/calPoint.h | 21 +++++++++++++++++++++ FastROI/lib/Release/fastROI.dll | Bin 0 -> 41984 bytes FastROI/lib/Release/fastROI.lib | Bin 0 -> 2636 bytes FastROI/lib/Release/fastRect.h | 19 +++++++++++++++++++ FastROI/lib/Release/macro.h | 20 ++++++++++++++++++++ 11 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 FastROI/lib/Debug/calPoint.h create mode 100644 FastROI/lib/Debug/fastROI.dll create mode 100644 FastROI/lib/Debug/fastROI.lib create mode 100644 FastROI/lib/Debug/fastRect.h create mode 100644 FastROI/lib/Debug/macro.h create mode 100644 FastROI/lib/Release/calPoint.h create mode 100644 FastROI/lib/Release/fastROI.dll create mode 100644 FastROI/lib/Release/fastROI.lib create mode 100644 FastROI/lib/Release/fastRect.h create mode 100644 FastROI/lib/Release/macro.h diff --git a/FastROI/ConsoleExample/ConsoleExample1.cpp b/FastROI/ConsoleExample/ConsoleExample1.cpp index 925c409..dfdc23a 100644 --- a/FastROI/ConsoleExample/ConsoleExample1.cpp +++ b/FastROI/ConsoleExample/ConsoleExample1.cpp @@ -3,6 +3,8 @@ #include #include +#include +#include #include "fastRect.h" @@ -13,12 +15,18 @@ int main() double angle = 0; cv::Mat result(cv::Size(4000, 4000), CV_8UC3); + std::chrono::high_resolution_clock::time_point _start; + + _start = std::chrono::high_resolution_clock::now(); + int count = 0; while (true) { - result = cv::Scalar(0, 0, 0); - std::vector> vertical_lines = fast::rectROI(2000, 2000, angle, 1000, 1000, false, 40); + + + std::vector> vertical_lines = fast::rectROI(2000, 2000, angle, 1000, 1000, false, 50); + for (auto vertical_line : vertical_lines) { for (auto calPoint : vertical_line) { if (calPoint.x < 0 || calPoint.x >= 4000 || calPoint.y < 0 || calPoint.y >= 4000) @@ -28,6 +36,7 @@ int main() } } + cv::imshow("result", result); if (cv::waitKey(1) == 27)break; if (angle++ > 360) angle = 0; diff --git a/FastROI/lib/Debug/calPoint.h b/FastROI/lib/Debug/calPoint.h new file mode 100644 index 0000000..22d4683 --- /dev/null +++ b/FastROI/lib/Debug/calPoint.h @@ -0,0 +1,21 @@ +#pragma once + +#ifndef HV_CAL_POINT +#define HV_CAL_POINT + +#include + +#pragma pack(push, 1) + +namespace fast { + struct calPoint { + double x; + double y; + }; +} + +static_assert(std::is_standard_layout_v); +#pragma pack(pop) + + +#endif \ No newline at end of file diff --git a/FastROI/lib/Debug/fastROI.dll b/FastROI/lib/Debug/fastROI.dll new file mode 100644 index 0000000000000000000000000000000000000000..997521d6f1ccaaf8a1f824cb2284074790ec681a GIT binary patch literal 309760 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%0A!|Te|nlpCtH0$T>7=ZfF0{>GT@? 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 literal 0 HcmV?d00001 diff --git a/FastROI/lib/Debug/fastRect.h b/FastROI/lib/Debug/fastRect.h new file mode 100644 index 0000000..99f13d0 --- /dev/null +++ b/FastROI/lib/Debug/fastRect.h @@ -0,0 +1,19 @@ +#pragma once + +#ifndef FAST_RECT +#define FAST_RECT + +#include +#include + +#include "macro.h" +#include "calPoint.h" + +namespace fast { + FAST_API_EXPORT std::vector> rectROI(int centerx, int centery, double angle, int range, int distance, bool direction, int skip_pixels); +} + + + + +#endif \ No newline at end of file diff --git a/FastROI/lib/Debug/macro.h b/FastROI/lib/Debug/macro.h new file mode 100644 index 0000000..4f139c8 --- /dev/null +++ b/FastROI/lib/Debug/macro.h @@ -0,0 +1,20 @@ +#pragma once + + +#include + +#ifndef FAST_MACRO +#define FAST_MACRO + + +#if FAST_API +#define FAST_API_EXPORT __declspec(dllexport) +#else +#define FAST_API_EXPORT __declspec(dllimport) +#endif + + +#define HVERROR(name, message) \ +std::string name;name += "error:";name += __func__;name += ":";name += std::to_string(__LINE__);name += ":";name += message;throw std::runtime_error(name);\ + +#endif \ No newline at end of file diff --git a/FastROI/lib/Release/calPoint.h b/FastROI/lib/Release/calPoint.h new file mode 100644 index 0000000..22d4683 --- /dev/null +++ b/FastROI/lib/Release/calPoint.h @@ -0,0 +1,21 @@ +#pragma once + +#ifndef HV_CAL_POINT +#define HV_CAL_POINT + +#include + +#pragma pack(push, 1) + +namespace fast { + struct calPoint { + double x; + double y; + }; +} + +static_assert(std::is_standard_layout_v); +#pragma pack(pop) + + +#endif \ No newline at end of file diff --git a/FastROI/lib/Release/fastROI.dll b/FastROI/lib/Release/fastROI.dll new file mode 100644 index 0000000000000000000000000000000000000000..85d542832cae242144646a9565d86e0e39c6654a GIT binary patch literal 41984 zcmeIb4SW*tE;tl@;&Ry(p`)yWSOd)kSyRog_d40SurRVAb&pJH~YbDg+eg`Jd{ZWD-F3 zy}$Rq@AG?}9jLCVQ>RXysycP5>Qr^dd)Io-$Z?zrE*j;yZSd*mWY3E{3>-Ij#2bUT zR|f1Ixy>N$9XV@JS+&hyRe5h!@nYM;;);sOfNg=#R#j7BE32@%Z=Y#fTv_59my$Bj zu9N=L{@0$2Zf)Nkb0=GF+kG1G`OWXOb~68Ot*4lOwDnu&A8zf2Kc?|;>sk2Gt%rB- zfIql-KZ_4;Zg2gb#YgYf{39$rqio?KDx-gm@;w|^@{>gFm8#E*V`*L7m9{|%gRkJK z0GXgcGb-U*S-1|>*1`!Km&ic9KGy{RH70&Wt_Y}FrkHnbT!Z94k8Hr6^#aFjqRed^ z7omc}9QR$U5Q0ZIt_a@N$2raqzyGi97aW%fplt)k76QiFqzwV0w+Sxp=VW-k@=72U5j+A%c+bMc{hS;( zB`*4ZbNQtJOTG^+rRBcAzDahtQzeL$N+l7!DO&xqN z!zw`lWo@*qnfm9t0Pawk%P z+nppT{pzy=t$!Z*dQ7ABQZKETq_O<@;P>vQd-xSRIR}K0WY3h)5gs?=yZ*p3x9e2< zdNI0d+g{Yubt=;ExsiXZF&s%ylC255+}Ad^>cZKcwFYFUKTvZBn690Mv7I;ZBb;0* zKVl8Z6Zg;O7ZkVMBZV%JLNl#Gb6y6I-0roPNRF1kB@(5H@_uhtgCMu6k6Z@cF?`TK z0yWShvsnY>qk+(0x;$NZmdVr4e}*(BVAVeKo`CUV)5ec%p7T^s8(4Fql5+WvzlcU% zpzC2owk) zKzhCNephH>XDP)%uk#)XfLP}&S2LTJI&ULLG9Xi26DQUT_=ADs;G5Fnb!Jfjymwwn zfoueZQNW3Sl~5@ui6EdML>qaFJDd#n1l(r07vWxo z`wLtX+#a}h;NFM(4DNflB=nROZW!E^aM!?b!wka`;P7J)BZcrYnTI99OBy!J0*@T~ z4H!6JP;$z!!2<@R@YbZ%A(y13rVss5EVajHq=s>Zo_u-=&+-jQNnw5ppO}<7Y*&;S>4#EfhXo z5%87s^%wy!s52=vv=jY4)D>;?)F0*7i~t|5;2G=k)g5UFuKw0l6IfJZU46z^ z5h$y%tUkTa<#h)#0Qb7fYHnS9rh0)dP;<-b(*a-A$eNpSc5O3rTpj;x!|9A|SnJg_ zdXImt> zLkKCGSW_Kvhh|&lHFiI!*N6EvOP~nkb@p0{?&8;Erb3HPeB8d43SV;+u_v<{_jkMH zZn=SlT=H>O)+v|VlGQR*nZUW_51}mWbwFPe_VAu#Zr*d8pR?;LewE^fEJ&dZq_c8% zMbq~$<+#^LJk=LQkS=H!LiL1F%2%2{eURgjrM?#N6a3s8-bDNaKcD%0=1%pxVv46? zsqiMD2=ddElTt223O~oZon=TheH)j=X_@jY$VKQ#qRf=*gCa)H{ecCuF%=vEUpYsG z(9>NM0Jm3xTje&3`t23S7-H$fsH8Kh0!^y=jzMYfBJBXu(pr!f z(b5P7AUD=}I=(TEellS)Dm_ql)<;BZyIzjF1sUrZijwT?<&4TW4;bi_yM?NO>Kq`B zfVf5Df=KDXe1sJW14K;#9+R;)=m(m`*rs%WF{o!|Y@Y+2#aLxvjnz18R))|AOy~*| zICQ5#;-Ij$Ml7GC!peYrs%H@r7^fjmtu7ti;K+j&N9aupP{qGs=+SQ#1dF;|kY8nN z)SnF8DAY#-Lq&O~@T71mDmc3M{|v7Q^Yt^JS_PyJrS#PJ^q<~DN%98*|I+(H{n5ZE zlD_8xgno2oDlMOCha(cICnh?Rzyk$@(5tj45HyYiWpQ;UmF z1t8dvAUJlf7yyQ-?9KyT&{7m)K&{rAP02u(X!@vX)`+auC)~U>l^%0Ro~d>eF*VRr zg1{OvKCKfP@L1kpIpN{wHPWNiEx*E)Z0{&`^Yg>VG{40qzrXrpXw145Nzv9|>vz#6 zm+^gwnqs<4SlC7CXd6{F^kxe@VVfpw(Gidze$7v*^C4D`B&Q&tO!x+IPFVdtE$FJo z3d;1+f@2^5ldrL4Q(usfL`weT0K%;uEd)P{2%!~NfZW>Mc{#}=>&R7vCwB`WkEJt7 zlp*JY@+M^FMkW>5VmE3W}+>3WwO zX43|g1N7{%a4DY_=2Nl22xFHeT0M^K%m0R&3k$!ZY8PnLUIY(vnTz=o-9te2?V-ft z(+ol0DKibXfFY%4!)ieAQVQN> zH3-To8)OS^hE2rswFW~`Tj03l!`iq5=W#>taBS#xlMHSmPI3-l;j$GW8a=2W*|v&q|@k?KaxVvQQ4w0VG`Pq3YX;O9H_TF>Vi8#EA;9Xz+!a)i%_e7ovo?FE`?(V?e%=Xsd`oJqL0cru z@50io8;yqX&;~5bam~_l`(nNCG93(2! zk*F{MKg$M!r$|`Xvrc{N4almna2;EiLQ!Q4&7KTueQDuWQs`9yG->&Ek4N=$f-@$C*`1Hu7M|@5P3wahj5*4^53`hDLKbXdV}osf^}Qk02k1^byrJJT%y9GDzTP=OY=rq!6OU zdooF;Bu7p53Y#P|G3)p>cGAccP0zg_iv$)LhY+@MueN~~pgAE6lKdtqZ!}JXs#$*$ zh=GYh);^)(v{6vf_A;LJI-i%ne2qW#axk~vTmMPmb_nxU5EHYu3k}^wWCsxuv4zy> z*r}dgxy0U0IC|qP84Nq~eV`Fd{|R}dPxQb$PXnIaKY4V6S7*)$J}tO@r1q| za)@%G*C6uCiI^8E%_SAiJ~QDF@w%F{vRIMB3?oCo^}?X$nmW0g|almZzmg^X>a#y>~Ku0M~AEg2q7 zFD(OwXnLXM6=>caK#K{T2^6)k95GSe0bH^wkRfmPE$A}kDLa`bMEUMqQLc81@T91xqwBG>3!_9;G!rvQ`a}q44E7v|12irU z^fL`~RUBv)KyUmAG?0z-uewhqy4V%yq`w3LmBSKOV;%<0kI20`rmh8Hsz7ZVnNO&-l=Q`Mp#2(XK^*8W0KI`-6wzfo zru3`8*!T*BHEu`75m=$o92W<=kAeDBAW5r$C9VQP<15gtm6HBPbat$1uF@#K7zd)6 z5p{Yd4s;gn^9HOrJr$5x&-V5}Ir8-MKvW}86i49CB-2WIeH`f54AiFrQ;)G8xOEvT zh;_c@hN;|pCu#I&&_ zyP#PbM~hI13I)4IEWJ#Gru!LWKPOB_Rv}oGLU~p)X5ZZuO&=R8Anv@UKmG0=C3Zpj z<1a*iZ;4)k{`AYhzeW887My}SNZ9t<->@Gx>{_i(eU7<3fzCD?)LR5221eQpq2VLr z#aVgb#}}yTlo%^o`{I1X%8b}FTQxV)UR8)T)lIsTt2rgfQ!_A=TSYlclewdP=`CdS zb_$AVm=Kz3#l}qxc3Z1p)=LzWNw8DmjOZU#*s($O{3aaouoEFc zK1d74ajf3jp#oB=zlk5RuV>Jqk#@4jPIn(<#S9VT2T-gCwi*OXF^=w~IKv7smTsaB zm0%kk9iWoEH7HW(w$BCi*E-jHZ zz>M7=g|%0#|Ly<>hjE}{ts28bwDAXfWF!e+`ee{-&ci;R`Ru@Lrx7bLO$2|lfJ6k+ z+3aFTbRHaXp|X9>gq<^I&tdjucIsW0;g!22`3!iG96OeRmD57-ENiKWQixjWE%kS| zQB|5;J54`kWsw>$yyxyF;jg+~VwL1L#XoWeTwxLxg1dO^ftHRCjgyt|48-7ZQu=+Gx1dhSD!(OU^|H)HSTh#uj13qo1 z)(}AP!!=P>t zHjN9$DSp6|?7Nf=0&m+<39(B!!c;eR>Q#7o%N&h6U zgZU{?7cMN7`*a3y*mu>@zL}8S5=t2xHvn>$s)7w%$UAXLeY?STy~$qJG7p zJeP&WLG0(8dFPy-Glk$6es-)a$)8K|hmxF%;pENQE&QohZ8V9eIv@~OL??*oK4=Ze zh|Ur%BJeOgPj&QFDB_Fn;Pcu=$5H-~ts3}ls0X&#CH*1LAkU6%yKm^(cCP`h`iF_SoKzwv zK~6--i3mBNVV;|FQj*dWD#YP9b?Sv_`GJa=x7XNm#&v&few$Lw{Sub z@*@YL*+M8)g1AW`5i?Xn1|%p0_%*PY?eCydMbWV%pxI0RALQS`@~hWkdZxC_r0%sy zj*dVfNecMO$56+*-K%)JBx8%1_0Du9ZTxg)`1m;cjTiDMh8{pwQpFHV6|Qc?;F4|& z%^H|-d&oTqHk;-QuOeoMH1#?fYW83p(+1&XFpkYjvYp2J0+AX-eHt(?YZWGHEpano ze@Q)O>SHrJhMAPrASzC6mY*!i4K(h5eG}-0CfEf?O97oDh)UW%5w{2|G!cl9ZsxhsA%J^eZw@RaQDO6uO_M44OwLKDTso*EO@!)9icQ$G z7yhAT$Qa^o5V(tzH6hrPAviv$`2)>Ixtj1`QYZvJ8|L*>5YPvt4xn~$YogdH{3)iy zQ5~<`LEA>m+a!4zq-i%){K2JAkg)DIVHjf!OPEOq zPg6`21zc@%v_ZwUL*!|+Vh(PAK7hddpq~E(JxO~0s~g~xo?l0R9-B4n)w-TPKnQX- z^n6qZRamDh6JRZP(Ow61FLuJA`B3<8iNUC~YL-AYjDzYiHx2O}qWli+65A0Il{p4X z2jgJ7ix~*y+jM<V`f9A3;nb7Q$+BCoK^& zY2aoHGFneU$Ob{lrL7NSM1A833CFCX+I&Hxq2CXSSs0<_kFbfdZRrA`;bW7q`dc<9 zW(mq|m=jx<%ux4DV2wpP_rVz4mIjWaW>97cVPm)BxzeR&_Js=;9*p#Tf=O z5E|c-vUUUpY3B&4(M4;Qp^zJ|Jk=s)HL9;qA;@4Fnov@A{!=@I8)#_yS#eZ#U61FB zkP3F9aEgS&CWe+k0b=coS==>$KE~+r0_uPuuGQ>OpKjN>p{LcEd{A3Lt?P?g8_n?| zR#N;+F3dAsg8VrNs-rD10ZYkfdKu^m^?zTPF35Y;Nz^j5U!iH~A#3L_fi`;t(*XcK z0JjYKjN}3$3k^aGVkRA$Jk;;1NrDK0oMz3ETchb;&7so6IAg3o zS_2UzB+94`VG_pH-qBGzfW_*_R3lwxv&`6RXuoro9KJkXG7MrJ9 zNMVV}O0>svEFa}5VB8Of1(v)BxTB@ez3}d}q6sj=!zh^6!}BTuhqB*eHM;5{L4GfG z;CeY7xK3bfA6?00CJ9Agz;qfxP6$<^d6uGtBr%jI$hT7OS-kSCX!yDPMd}^&GUS7LXM3N;H~LthDXG8~FWkx&3&uJw_=F)ixZtx5 z7kub$kCX292y1bbr?MLTOLtS*eHb>xX^SSx0-9qc)_QpsQ88HsBehZ*uS_x1nA^oa zHjx6MH<@8wI~1Y)sKO51)d#*psqzMasamB7o;sg_ZikR*mvtcBl04liP0X{@BuW!+ zvj(pBVvf1o3q6<-Ka9jvrzJ<2|LM!v=i;6xE()}fvYpOuIvqrbo6wPJ^aL}cG4eHvzJ#_}dBmWH4e7av*7q!l`x&hdi4+IVU~xmmc|hSmD=#1OBnQOqgV$ zym5Y3s~aw{EYs9Z$h!sgq7rFW5t_X|PCg|0GjG z1F$?xvTtqteNdVp^pgq2yH!0q8eL>vu@y)Co-iKXHXQTUL};NAYe}!FK0#QiD>88| z?8(K$%MQW{kVgfi2-&&;^dpYz<7n#IRzXA2(0vxhnqC=z4Gwdm!zsz)S*Rg6r(uF+KG+kXZ*SfQk=49 z6Lov9-jHM!hCGRv{vk%2ad!pMLXu+CZ*eiH@vaw)P!l2Vddcx7DIZ;s_;p91vpRkY z2u^oU9@9*;E7LAaLRD>HjbFcsyimO+R~lBRej7`3W0DWmhZ(}tE%0zp33F)}%MEBX z+*2}!q0y+VuA=)dQ!q^(7lS(!BuCeZR0xn>CKJ5Q_q6j1Do6bbHH@RNee)%_;?A+Dgn!F^;P6ukJ5=oH2nz}gb|^}j;24V zMQW)va2(}86VY)LO{Q1@6`b!FD(>*9aQ;2e4ven4bq}OTNgufYlyp!O+ohhhHw9w$ zT5JTdv>wdLzRf~Qy1Q|%@V(RzeUCGKreFO!_QZ;7l8f@Or2oq;!K79=vtk`&LI05%sJL#5JH2r(B5z|I& zIm)BK)5Aq?X%Y^FLLO^OR<}?yXamTT^LMOXyuAB!DYSTz6#6eMO}kU6apvTo*y&vR zDoKFkIKw|On3XdVEA!d5X^MUihpK}WKRf-J>imTE&*xNUcPDKDqv_eP+H8SL zp#vb##5x3Yb`SeujeQy^;9cO|jle)Jvq3@^<|skqoqs|bk+L^ekY}Tdy%~ah59YW% zfx(hvcMZ0>@9*?*hJXoATn>rite=1EC^{bl=hZs+aqAhZ`*@U;4^xTch={zjN6dmH z-J8uC@c{oAjSJjwB*B9~)nb`{4e$kAGQtiK;_?wKhhPlhUkZyx%v!jCqnL!?XW%39`OTgZyipz>^+Ivz_&WM|_Vf-D-L>De(j_@g^*>$U6~ z$!msH4n7M&v1kE-gqo6^6o9gcnQx^~30Y*YGlQ-{FM8oT7!Mm5Nqwyvv{3Qiiw;=k z?y>OeE&&ZmUM#RKb6|(<&87sBfmrjRBl&gzp-oBoSg91?@}20w3L=I^9qrBK*WIe& z6oK9%{xv4Wb#IdBaAc%ufgN9fx^u2M85n@uGST!G5JgjvVi0onss%QRYWgEn(;v!n zT}bS+tNi_LI{17M&v*q^x6H~4p;OR&kc~eZ(DYkOVX^ZvpCFq?QPaWz<(5+hR*+Kd zVz>68asI^Baolt{xn+uM8ZgnEja2@zpA)u{aup)#)g$p{%H$s*7_C`Jx85gXDACJc znSwIQZWo%(U5k;1AA7|Mvy%BB0O~Q)#0$|mAan!(=#n?+^;?0T-Xw&~FA)gIu>6Jr zYDAh1qGbM09iFMf0eYOs-C`rQF`Hn&K0?HSlRUPZQ0e?`?0pD9c3UKQ)V&0B9EMV* zjZ`+j?vMch1)G%6EB3WiuO}t>VDO_`Bqcdv8`3zj;dG)H{IDB4M2w{t(Q$YsY<{qu z?iZe##l{|vRb4N%#3(r zrI3u6m_qMv5*Gy4ywr#VZ<^@$_jTv&4dFmv$4kQ zhRsB0UyJv$A13>O-qK({?1k~OFZ(@1gxQ~9dAgIG?85SjtNHYL<&$3dFcq&%O3*Ir z2S57`Tp)$6o#W~omUGdS!g^fM^WvU9_C#yY7}R$7zY85HSYRj+jJshzfFVR`vC^vV zARf{|s~BuFc^$3G58w#GBskt({<`2ew8BaI4V_-r57J|#KqP^Pyayt<)_!RDcF}Q& zSKb2?WHYj9`Wo~^_O94t#GG>fS%`NO$9mWWJp`$m^sY;JAi=AoJxo0DBZz;xKTCCh zA%xWfl@KuIh0yJ|J}^D1)eUGp;C7s_o(qit+0X+H?!=wy7#&q|>|MSA%&)+~cE9$b zqNatC4~o%7s@(^8?~v-XE{Bu`tSvTXr^FF7JMPE&jLx&kYAxYF$dC0CEiGX!g8WJ$ zlO27S1IrkU`ePFCqSSY=3i6M=MZ+8>wS2mNgK4q^vjUmf=!nBgy%4{jgv~{n`n{Lh zNT%6BEa2NvZx$ zl0Om~zNA(^BSv>hc*&d&th2hw8ZBi-L}T}KWelx=xzhEw%kE*_I1RITLsPoE%FpVE zl)6&pS^(+81@_hU;~0oRr(~%K4-Of?)x=#=ag| zMN*6yYIxyVQ`guUd?#S!#Sox~V|vpVW-Bo9{>F%4u3Lr7r@j&7G`rwv68PKO(OnH6 ztqJxLgc_UcH@+yK!8TaT*>;e{~ z{A16tB_-5>7XwfJl18?GGfu}IUYXC58n9dZ6tdEYT?uyPpYYeLvDbk-e@%(q?^Wzg zuz&4w@fpcDc8AelDf}MCM50m{#a62wqaBT(8HQ_vYk{M91P=D0%r3ZYyi6l1OASEn zhU=1y?+Nt(tYG|R3ZEezvBe%|D0Bkiwgbg^aWNb=&l@nA;xHXMX33uGRRlKBa>a%Y zBLqvo{|)TNNIZD!HN5o!7}@<+Hy#;Z@|lgevhObqyUCj#{<4&xy94e}shckd^O;S0 z{C$eI(SzOt^xsKU*{-J@BXA3!*+6mLT4tkoJ0kl~RyLJDGy%g)=)8Y^+m{p$)8lJa zHZ_G-4nU_F9}$MrhKz^c-oJ2J&iJzODWdU5&DyWru72fSeNM51drR#tk<~n|c12+5 z7#vm3-&-Ks6NR_aqmv$A(}PuJzO|>7ZCWeaez=u;%kI;%RAx^ZAN4DUI(RGV;9oPz zw7$&bpSmiW6*@n=hYP31h4a6~1#kWJCWyYq2y2Cxx9V}NWbg83Wzi^NLI^3`HHa&jY#akb%(<2%ye#VL>b^dr(Sm$6U`#;0;a}fS0@U@>sv0+b7naP%j8(4n0HcZKBxf28yEaHn+HXryg$C*aJgI z04F~*3VS*H=jB5Tc3>L*21ZOi6H1Hb;sP)3ZzznVtOhS#@oMSOm%R0Q-nz_+cc8&e znt_-aZU9&Q5(5OC_m>;2U*f`s4SY6|C_qy*$HEboYi<+4+cY=}s~ViN#y6CPmZdxt zKTGj0da%(J)wo@XsfTfk!?oeK>p=U%;0_ZV#~r~@VFZVYM{r(u#EOg{gU2UCq6r$L zV9!*nqmR%!T1$SLlE0vo1N7K|!^I=8Gaj*m^cfI5gFqS#Dee=D+8#nDDVh5>dVGgR zK`Ui!#<@-M84B&A$3YZ;tf|PFimZI5HZcf}a=XB;yDp(WNAbjsrWf z2|~4Sm|>EPDqeWN8m5t7w*nbyq$>)t;k$Di3$%qs(!&2Alw;YAj< z@52o%nx-)O?xdwHtu-;@<(96;Z5=kB{Sh-XCbMruWfC-Q+DU#+RDU1#Ek1+y%2!D8 zUToE-Tlmb+_{@Ju#(jC1a9T0pyvydA>ma$f1w~r}qY%Xi(&tyS+@+v*R8!=0F~Q6= z;Ow>&@VhJsMB);&k?4ZtXsJN$lbTPd&R8lP8pr4LQ)*Exm59WpK1qWO2&?OuuhGx! zhqG13*%XHZj{4AP({aLaIJwwAIs4+Rj%avKcERr%)WOq{Url z5{(~_Vv9w3y8^GOyyxNPd{XK`Tl6j(p?68u`e7fDyyQj7NkWUhTwM~vK?*@ z+}omjN>nOo{nrJj3dSRX@r+8uJ zMp5zPi_s=NV{Pw(4;|zmLVEjB(&0`l_IQ60TkE}p&Ugpn87$S}vUl}n*VbFeuC3vS0Pr(0(d{I4N|~`9qRD{w zFJeog?L-eSq#mNBV~i(EIRG)9tZb6jrHHK!K>_*nDTU==xQs@|T5V1AfKyoANHZ;O zU0a87$Ar+oh*m)UA}5&e=V#NiAe$-^N7i3d1h~dxkydn!yZjh;`H&@&X|`NoOy(06 zS|-FXrq>CBO>1XA%N47ZKdxN12B56|jxWLQCh*Hx04_{Kb)@996-A5_ee7y$hYnC; zCG>VAtt~VL&&yR$n~A|r=&UA;D=4fLb2Vk9*@v(mz&JW0JH0J;VF&qqP93 zmH3uBZ-}wx_@*D_C z`1r}(0bp=H;?qcz59_>$&5krV-O%~I7KmtK6`1< zn6AewwKPc;k)GElsb{DXbg_y}Qp+ERh5JoVG(Y|K>Z1vYUMGkYs|6E_7iq4+23ntM z2I_MSYcfst3K+vRA7KIL-iy9Uvy-07Y!!^B(2ToLSKKd4mGZgs6=98V0=B`iNvN-z)zO%PY3tg6bXsBQf5W z;WHt_nGn{@)0hch);@!^K{^=mDpO#EQelO{t=MQ7b7DP;=d|&N_MeN_>#fDzcu;Q$ zbi*VccZKF+qMq9dcMw-LQ~;e;4Onm-kzp|Q6f_ckCgJA-2NdS+Av_xb+u_~@kZ=V- zqd?TG&g@vu`~nTnT8tt!#6`3Q0F;XCA?F03sV7sdhRcXEuJHbUPcmh)I*T;A8qPtDPB?O|850=hp08WDy97jHz&Jbui4lI8| zloLhe_V3YQ(=DJl_wV%hh8|}n<6HQgA3o7CcL!J)(}D&5m=++DVS73Z$BC567fhgp z2`#we-WNWJ;FBl=8G~aPAg{y#ZXaSBVQTR@-s9IDr*({Rp1uiyfef#W-1n;<5V<1DYRJ0DDUDHFc#*#r!SE{xf~WV}GKv$Q7; z`9mFA$n2lh3fbFFa<}{*QJL|bz$~A*q(PQX&FWdY9&HQrD;m;C&74fl3|G*`;1qLG zl+>DJup)}LO{lRM1`S(SYX6MukYvcmiH@li_g8^yqMW#)5@xg*7T)zqj5Q|p!#k3( zSunQZDjJBTwV+YcaGZu_yBX5JT7)k17@^0{^6Q2IMwdKj;e$&aPE_oC?;77<*YBnW z-M>tbWY}LrcfbgU%Yk=fK*P7d>Wee20eDr;Mnezp%3wprUeUr9uFor4T7KMEyu(VF zkueMmP$kw?_>U39lq=%QzA9;EBSrYQ9K zVV2gdPit5OCG`L;A_NTy2QUTD#bMKRu$#sZfkg`lyg`X|$A8e6a?%1Ix97c!OiVh< zFT+X!@9j3>y>oi?0{2~3&Z7!z6?ftG%u6CH+WL!K{7X%eu~jr~m$DAxaB?4B7}^P0 z9snI^;jIbitGLn+vqOqV-vap5OM6Sx?D~>?0Ix=@cu>ImPI8!}LBv_6j15<}X}K4d zv2ncECT1PLVNol_3AT%$Ct!f$Z0KkDc?2%Rx^NUh2PPD3*Sv`4scdW=@uG+yf#-wX ztVWiA&w!vLYMib(;pjPP=+zg3BgJql$JO9XHLL#OO&$Y;Rugu#FTygZkFH-I=GiKY)>In(dg z;&?S9njXCxX?P(I-^B?BFwQ3b1!dqc|F7^muYfM23$MFe${mJi`p1MDGM5tuuWAC@zfb4j`g=onsHb!e#ATgT$ z_fdf0Xr`(6-j|YMVaWduWZAsO0|X`Io2iJTcjEe2G#oPj5x|hK=kA0{zb|2Glg&>d zDKBIK;R@kCxRP=YNP&NLIqe!0sMS|C*AN`dH3T@0=G7?e|n^d{3iR>(|@SMz8j;V2b!E_XwRDCu9KWKevUJiXMP6GI^@m+4Wu_I|4mW=di z*Inu%5W!af*R)Wl-h*SEN88upo|5yAhT!D6(*We_ci`D<77?MDMBM@;$n@=M7Nk}^ zgbJ!>@j#nbjUq4QZg^@SnVPBQ8r7qr+mL>&N1^wuX?vI*paN|!T5QFTU zGAxTR8L@W`m%{=I3BWf^wZXKeJ0CqQo4?5;hF7IvWFoT@S+en(VoS*U zHzcTeSbejWu>~hjA*O3?QsM@LP^&YSr97Uhi;!usR%($I)!1?G~Y6`eM*?!s4 z;Kv4aF0kdM&Sy0y9zx3c^|5y_q>wWsl#l)qEOg-m65zz$CVI{2IKGF?PfRZW53BH^ zQ^%Jm0x#6ybGJ)9f^6Lsrx=-DN zgNt2$3B^KF znuAee4W>N3#Bp&Y25=?QJXvRX06t9v4W8YZ7Q@B+W>>~|=uFHxN~yR|gWjk`Z#ZKY zD|+RbeS8~VC8n1Wk7JP3nAN3dS9}k+2(Y6E~Z|3|DGfb>L{Ad z+mKuSLpO-#;Lb>xF2xn$@(kvk5lBH@Cknw5doDPT=-oD?;tm%xbfWtRi1nXj&%{AF zy3H0%{~fYLn}gAW3%k!;?`rkdgHA)HF!^XzFkVOS$yPEkFW z_`e*l>9(zg&Qr0x2O){n@aom*=+0s46ELtsJq*!En#PAalhi?oY&D=%yc3A>pyVc_ zIich>X!K&Vl7P1+Ttk_LsAoVJktFpv0-ayPTa8H{xH10HD>y)ocXrC7wJDkYN+UYY?5p|`>Q*{#z z3f)D#%+RQt)ms>9Z#{3&;~iAKHaGIGnKvVI{VsM7gLgNrHUAuO^_U3{Gtl%FNK?B} z93lhIUVo>?{ru6`j1-$^>n0ZUmCC78(Tz-o zFbyF>wX6mA=Yfl@lrl~FTG%4+2Q z=t{$%P{8NY+7QH-U6Sjt;l$<(b{)t5K!!XmS#mT~4aAPih!@AhRT%V*nVlcNZURM2 zl9CpD(9W%(&_Kv#BK!mz`GC9 zw{%!3`Z)U&Eh|p7Ulu;qj_aK?9QFi9?L{sQH&-FQvjycvyOZ9F!wY|)BOlha+wRMl z;F;vsz1O^Mq?X?fQfLEwKEbuE%>=;xcu+K&{tl3F1y}_d?k%?yTyBL1iKhR7QqT;O zVwyvVuvCWBt3BwY2bB^?e-KRy*ho3w$4J+=u(D{lgxGhUi4g{LZQDqtGW}Y=miT-d z+zR*{86$^#H<%Xl(=im_&w}tkb051DQ*}2sAxNQvN+)g|cJYs+Mcj6Q3jGuaq|cnu z^p6n4C{9K?SP2?#+S?!hWvybJ$hDn|C;tjJ@<_gWB>!@~6xo}h*C=A9NFLvg%dr+Bdw zir9o4gmXOj%LNU>>*yBzKrx=(r?pSptK z(_&ZgNh}KBRwKzAaEOj3b8N~Ml*>OGMMNe?;C155M@Etpu+T-V5^S>In-NtVnsx-g zg?;n>Nz406zr3&fKwfLlE9zF-uhE|%Xz=75b;}1_tGnn=7r0iRpuc9|mRoUU8T+|B zgJ)11|Ez2Ear%P?A(P!RXg|h`Nj^<0fe`*?M@_yEOj(r+nHtq~OO&4+PBd_V%*jQG z30z?0WIuVAnzx?*4r?{rQoHcF0dqQupulf#s7`as=JH#xat*c^+#z!@f}Kf#6(Fz; zN||#j!ncmDtvHHkQ;2VHJby7npr{>Lb&#AY;#}L?sl}}3zbC49+?!WNeQOR zM5;4%xd@MXHIo+E0j$u2+pX-c2<3z)nk6J+itaHAL`PklL9P4UkLY=bJuM9K5epAz z;VanF#-7vIQ)18Q?3vG=GuU$$d)~>O1?+hjd(OjitDyh~*!&>~2y_BR)_y_zV` z1w$wBJuJE+i2MAw(@fWO^Gs?vMw;v~*-KBhv%Qb!vM~PCj@uY^*XNl6Sb5;H5qN9( zkRb0>Uu4>g?TdOA9I#HsHb>B4^oz5<1iyfB5r^G0S9o)dN>~zR;N<`>KjolLl82A7 zqIJBEgVjSzU8_Iha5wcoIK02*!iT>At?80*SV9Nrm_oN(o1&xaL#ZE!vS%H8K8&YU zYVWhR{Ai>X+8c^XAJy0=zjHSGcnoZZp9{);PWHDa^p7o$`~xW@Tx-4Oo~HAoaZqaN zncrUwEsQFw2QP}osJ(bmG)ArdqG*iT{EMRbpvEIkZoHcd;sT6SX%lipJXQ>OcQe)G9AZjmDR{?V@M}gm(Q!(dY$Ab>KzOoFtZc z7e%Ab`KrS&iWa7J`{utc)*zdRw|zg1hPTx4K?K^J1bx=;1zFidv`_zVCM@*Yh<4RQ z(X51a+eOi`32pm}y%p-!6SPO0Ww+Ajq%f)Bk`4Y0h3w5#6JMpHExd3i&(2kcy-dqm zY(PhvC#`O!tFRL3l$FF#s@Fr5i^xDh8DL3xzAr{h;!k*+*St=6$o3wKd? zU0k?M3vVU38;fZ@zlGvox3K&+3abb^V?00Vg%ZPRt>amIi~_Ik>Q#9ZpJZ4M$awb*RJ{@o1Z#BqJ-M8!hjk=$& z`&GLCnC|~Z_ZxM;P4{E;^Ru}+jCC&Na}Q~8TR%UBe<9yirsca(`o-YI_$#$#+*ocg zSB>XVge%}L+*w>zR=l9xmp3y;U{3MR%b)c%O;$B;zveH&wS#dAttE#H3x*2~0$G0#r<93llkp0Ap zCB@}sCAI~XwYI9tGFw$~#l1eH#KTL8Edmp(pi2etDmaUpx^e5f^ZyH?H z{r>6P{}4atl%oTNKY4yWBRYRwy5Ak+_h;wFzYzV%Q+j=Mf6O1Xcy1p$*?p^xFQK;m zg5xk|FZiQoQsdIQ^(6K=FFow?gU5EzdiP4DXm*~X*h{xD39*_8r|J7Z9-r9b6KU5!E9Bzy^DuZYf z9q7ah{>acHoTvUYrq{>8w;+5z9^%VuLwSCb#SFFmN~E-yu8D6C!av`Sa5w2`8H7-W zfBk+lX1ZrSp13)Aymj}q7iYZcTCl_Y4e^tA^SoQj@P|Ja%$r(VOUa6LbKYYGGr;9(7$dRM6$xM1{-Yki;a$MJa9LN4HyL~a69=aaXWHbh|XJ>QS z4{_XGSVn8GS~Q;acizX9(ce|K-vDwPbPD}(TW(x-_QKM8A$vcAqj=s791-QY2*=tN zb{D}i`oKhnXX^{gBfQMMFqSvF4@_ctF{b0nl^CA04=kVI34LJ3hgA^_dJbQY=z%S%EDtO$L7e86br4n^_rV7r zELngi@-d!pB7m{FYci8V zux`NGDW3+z_ku7Ev8JXIJsoxy5Lz*#Ikosd(Ii zY8L0h9QPf?{W_60q*I=%>Z*nI?CTNaiU6x4el!^4o8bTCuP%mXfXO^@d_uNipotqe zA(0z6KGAPL1DPI%ekFej{rzO%R3&5wmTBXL#eb&71rWktPe$GWEHB|$0W+jqxb(n4 zF1=&`mp%dE8L5$B1;e->ZyUqixMeJN{l; zjWCpO8C^poX>CKo)_jb6(A@Gg$1Q=3Izih8m-#XPH~ta=Ir!0)Xa*YhG35! z(y5e5^jJubztZCvJyNh@n!4X;eK{emD&v{~!xvrgo@w|*qwUz0!xHQpuRf6Z<+bV< zmwDV|WA;en_(c=`%{cy>!3k@}Offx}Xfypj;YQ1Y18o-g$qx>;CI5bS@)gOpj4=j_ zk+V!OwI!hbTHm03XCxMlG$(N8fQ568g^q`N{FfXz673NmH}HuZk4tYn`h=e`$j|b8 zV&U3=ZybleEU4#+j~kK`x#aPduEdDRZ_H1~W_e0dxGvy7bRFcMS;{x?Ce#7nw;Qk5p(Keb!pN(HTZep9@4j*3uP=^akeM5_AgRq9W}I*%r(3w` zpO`sMAdyS`+QgY>4d%K)?+VNeZHy)q2;dxWIN)&Sq@%uZ_iR12o%icu1f)>&^q;cn@0VfXEkY?f1O5kQCacLNnY2&S0A5JiFwuu~f zGhFi1L=*Mx2TL6`kQ+8(FgI*`de%bKFyK+%r@*^iN!TSl%Vv_>Gy| z*tOSinYGt)_C;BoZNfs%W+>o>bXg;V+mgcr{R4_DkY^gte$aRj2R`Ro2Tg1l=1I*k2^xJ?)l0UHs=`?0% zq3k>_q&Yvr!1P31Bd4S_6-!=Jpr`kX!(nUTn4v?O!ZZ7G~(%V2Ij`sEnhHljVm z#0}{lzzx8+;0gBJ9hh(RGW*Bl^BIy%Tv9|EX(O+)a94e8;fB1O#HC;ynP-`~wo=T` zSS(E1thHHu99_euvN;3u1;%hX+An>4Y9tYTmw>doa*q24TsOp(elr&18US1@uFqrn zscaszkgoJoUbH&*1n^#iq&|QWB25!Itq+3j!rApI@188o&5<^d? zH3BpLui>gdi+n?Zfn&Nq-Hf()gG)DT;}X#qh7{-*==Bt)AE_L;31*HTGRRN0A-?EG zKBJKhpL9ZC05=ReWf*kIFz^Na5Mg-4#}Eo(j94{4_c_gve`3kUZA1+ zNTWRm{bKtKT3h8~2*v*>|AlDN8j61L`HOU(wG?g5LHjKF#pA8-R}Q7e_Jr|xY|%oA zalcr5WSpnIgceJ$y+C@5RIHqbpV#{Z3DiHeh%bk$BZo$L3_h++>HDFQ@^bDL-F)RF zpwl_mb&KoHTkM+c$=Ms4y|B1Ezp|_%pyMG$x0zK|Ir}F%s{oNA??9rQG`_2A0v}YXND}brM%Z{HPfai~c zodK*CFj}9-ev5vG5b_qp;r#-zBH&%<_bla$glzdshOAVN=*+oh~f#!Qx!G z4C|o&DGMw8(CHSUQ&{cyEi5Z7TUfYABgJt)<`(-FSNpKCGH_JTtVLCoOFg|t?@>Cv zz%swDu&koAGFDPyIjqvyujI{`J$;tw^?>8T>ouO^VHzZZE3NYRIBp^b8qDBb=r5)! z1$ zSXx$2QclD~e%zUs_mPb?*{f$<%U|!RY>APm-@pwkM>tXyH0?_N|K<>)D;H5CilQ2_eHSL<6?6Y#~7v`klkm#RQv zaexSMLlI*EuGn8Tc5(ICrDYXkkv?{juh>7f{Q9xikJWp=UwTzdMWAf4FCOJFF0Z_@ zS{Dn>W$@q*TUA~aPFT=rGjSlmjx7!uC13Fp-#PFVMiI@aHAKHeS4GK8e_2IdCCcP3 zGq_l6j^t;90`jEMl7BgAnO4W8$3RvcS~Js+l+fDfivJ;6Cu;spXovyec2s zfuYU8x+mdQU%*>gQd6$i0kG`^%de_j=qf3x@{#?a!!#pMo>%OLZ1`|Igk}tI#|b7? zR^DIZpQ^V%DqjUT@1~SH%c=r3#pSar(6}Yg@8;PRn!uOzNcL1FELe+CEiRaREpd}q zQ&ojp5>v#`Yvx%H!LkZeBnIMsX%wsVNM+Sj)DgVqgMDh8Cy?g$EvUKoUSCxVR${uN z##gm0-&a*yS+$tXc34~cs<^CkOB74E>*Amop}yi006BvZ+|67DX)d9)?miw>qxhXG)M|0pz&bJTs_$rM^# zxx|MFY++?JH^fj~R?%N}7Z(Q>#S7+zCbfUT|2r*EN10+bi1*%OJ5c&It>CmX5n8v= zTJ<^`9`x(hyx23g{*J|KHfka3&-91+C3pjNtk3dS<7K z;4yl1hFS4HBWdz3VUX|M7$9N}+*zv>c>vjbiSe-j+hB)?=RW9sDLZYKI7Xve7vKkGIv4 z4exJo8v!T(J-8PUCjS$-KO-D(XCwRE12=*m;N&lb<2Gsj3WRM4*TGML9gX_S3jazt z;vwF)M)tVXxmZ~MpZv9O1qhS>7+e5h@*mgXo8XU_h<9`VkGH*%4XzAsBjDs$!o7%a z9sFgmi-jp1XCEWGnRgP}?HSFVfp8|mMex(y*ykWjrmiV))aLo{-+^W76~N@-JC{en*)6_pwqNgK)e(hwMD>!wGg-vYdCiJkH8VmTKL=bFz%~xr}S_)e4$*!Cx8B8?6*;F z5&Tc!!U&U}UWq>V70QP{8_tbz0sM7vM4$ZmezYgxMez5-%|rNY_$d!)^sVsSdYJsV zdUziEHF}u*C-v}C@V|pw134joOqE85e5W2JKLp2kfd8XvEt~;=E8HURK>pi0ocyzT zm)|%?muh`PzMzN6@2CYX z^3s{lzrj)7$Kn42ZV%vOcddL7{2^Qie;-^I!nk|ICBTId#{DbqYPc4J=?sUCaMnWq zu%jG3OeZ>YphIx->0F1x2IEy0fH zUSD-jVtlfP?bcCk$+yH;j=Ot!P99xcjjMN+_xq|w+iJ>O3u((Yd30%Ud9`n}?YbU1 zldijPDU+`2!_%bedMbzPldg-k8zSd+$GMR8Y%1m2pNTx9KGXF~_cOLIZJRSU zXK&8k?A$DD&fi?HxoGpE&Hl}~zjFRc_*Lz5>z~{BobCDC=bg_B&*wj1_x#%D*FV4U cdAbXbh7t-k)ot3cscjRToBiwezjq7#FZiO%)c^nh literal 0 HcmV?d00001 diff --git a/FastROI/lib/Release/fastROI.lib b/FastROI/lib/Release/fastROI.lib new file mode 100644 index 0000000000000000000000000000000000000000..f36a0c02ec63dc3db6e9a60a80891460987e2ee2 GIT binary patch literal 2636 zcmds2&1w@-6#nvKYg3U>-6~N6D%6^$NohsQjkYkM=_E`Op>C$*Olt$FQ<7+w?y~X` zy7dX%=&mmyNJRz3g^y5h;jW%Db8j-yR#S`x9`SoCHlwB z*?wDDDXC;rO52D5I0Hl*z}OxzegI5N^EA!EYPn=o%%$bE`$nN$DH-OL)odB10!&k{ z7K^_F@LVGNctxw~E9O$Zl1HwwY4f9k0Ya?jbNL6k^U1TrxU^LtCcU4A>b^r zh{uex`RM86#RW?MvLebmJT;M>G|V z{Q`;oFv%$pb!kin4s{I|;zVk^^CG}`T*hI0YPDuJ+@`zLN?bQ?B#H%nMaKICZ^nu6 zq?YPwaayUrk}t3egzfI^Qm%*XQ0R#A>pekGDkGli$O7=v-Bup&aQ;3LlVJ=!gf1rA z^RPd`iyZuRU{P8u!Z2tZZo`iSjyn)j(%D{*aXMkVe)Z%18!tId@pz^#*~4y|*g(+l03r5-{>>U5UB>mU8j5FLrXT!3x(2_Ywe82|tP literal 0 HcmV?d00001 diff --git a/FastROI/lib/Release/fastRect.h b/FastROI/lib/Release/fastRect.h new file mode 100644 index 0000000..99f13d0 --- /dev/null +++ b/FastROI/lib/Release/fastRect.h @@ -0,0 +1,19 @@ +#pragma once + +#ifndef FAST_RECT +#define FAST_RECT + +#include +#include + +#include "macro.h" +#include "calPoint.h" + +namespace fast { + FAST_API_EXPORT std::vector> rectROI(int centerx, int centery, double angle, int range, int distance, bool direction, int skip_pixels); +} + + + + +#endif \ No newline at end of file diff --git a/FastROI/lib/Release/macro.h b/FastROI/lib/Release/macro.h new file mode 100644 index 0000000..4f139c8 --- /dev/null +++ b/FastROI/lib/Release/macro.h @@ -0,0 +1,20 @@ +#pragma once + + +#include + +#ifndef FAST_MACRO +#define FAST_MACRO + + +#if FAST_API +#define FAST_API_EXPORT __declspec(dllexport) +#else +#define FAST_API_EXPORT __declspec(dllimport) +#endif + + +#define HVERROR(name, message) \ +std::string name;name += "error:";name += __func__;name += ":";name += std::to_string(__LINE__);name += ":";name += message;throw std::runtime_error(name);\ + +#endif \ No newline at end of file