From dd14e83a350d5a587452c19517abd29ed07819dc Mon Sep 17 00:00:00 2001 From: Michael Pacheco Date: Wed, 7 Jun 2017 13:00:19 -0400 Subject: [PATCH] First upload --- arrow_detection_hough_lines.py | 54 +++++++++++++++++++++++++++++++++ arrowtest.png | Bin 0 -> 2150 bytes arrowtest2.png | Bin 0 -> 2515 bytes arrowtest3.png | Bin 0 -> 2898 bytes arrowtest4.png | Bin 0 -> 2905 bytes 5 files changed, 54 insertions(+) create mode 100644 arrow_detection_hough_lines.py create mode 100644 arrowtest.png create mode 100644 arrowtest2.png create mode 100644 arrowtest3.png create mode 100644 arrowtest4.png diff --git a/arrow_detection_hough_lines.py b/arrow_detection_hough_lines.py new file mode 100644 index 0000000..7f741b3 --- /dev/null +++ b/arrow_detection_hough_lines.py @@ -0,0 +1,54 @@ +import cv2, numpy as np, argparse + +ap = argparse.ArgumentParser() +ap.add_argument("-i", "--image", help = "path to the image file") +args = vars(ap.parse_args()) +img = cv2.imread(args["image"]) +#convert the image to grayscale +gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) +#apply canny edge detection to the image +edges = cv2.Canny(gray,50,150,apertureSize = 3) +#show what the image looks like after the application of previous functions +cv2.imshow("canny'd image", edges) +cv2.waitKey(0) +#perform HoughLines on the image +lines = cv2.HoughLines(edges,1,np.pi/180,20) +#create an array for each direction, where array[0] indicates one of the lines and array[1] indicates the other, which if both > 0 will tell us the orientation +left = [0, 0] +right = [0, 0] +up = [0, 0] +down = [0, 0] +#iterate through the lines that the houghlines function returned +for object in lines: + theta = object[0][1] + rho = object[0][0] + #cases for right/left arrows + if ((np.round(theta, 2)) >= 1.0 and (np.round(theta, 2)) <= 1.1) or ((np.round(theta,2)) >= 2.0 and (np.round(theta,2)) <= 2.1): + if (rho >= 20 and rho <= 30): + left[0] += 1 + elif (rho >= 60 and rho <= 65): + left[1] +=1 + elif (rho >= -73 and rho <= -57): + right[0] +=1 + elif (rho >=148 and rho <= 176): + right[1] +=1 + #cases for up/down arrows + elif ((np.round(theta, 2)) >= 0.4 and (np.round(theta,2)) <= 0.6) or ((np.round(theta, 2)) >= 2.6 and (np.round(theta,2))<= 2.7): + if (rho >= -63 and rho <= -15): + up[0] += 1 + elif (rho >= 67 and rho <= 74): + down[1] += 1 + up[1] += 1 + elif (rho >= 160 and rho <= 171): + down[0] += 1 + +if left[0] >= 1 and left[1] >= 1: + print("left") +elif right[0] >= 1 and right[1] >= 1: + print("right") +elif up[0] >= 1 and up[1] >= 1: + print("up") +elif down[0] >= 1 and down[1] >= 1: + print("down") + +print(up, down, left, right) diff --git a/arrowtest.png b/arrowtest.png new file mode 100644 index 0000000000000000000000000000000000000000..acb07a63b65bef7af679f00aaed0c2785dc0cb1a GIT binary patch literal 2150 zcmb_e`8(8WAO4azLX#{9S*xRzR(fY5JCl7KvXjVC8ZitRjB}3HQZ$yy))VixB+&R=k@>;2)`uIst)`|~WH`+4#`-5vJIACLzCV6T&- zy*B_z>45z>x!qvx7ZKGAHc}{W2U~zd(Ov-uGSN0}HUQ9pQxJy#3mosc=@@_l0LV*8 zks6L~j06B#fs?(BPiiQKj)|d&^oDtunL<+)r{cBBlI#+@yH1I^M?MATbR8Pr4`sfM z2}k7oIILZYxAH8(XL~z4iEHsoMd_IfH9b?%HjEXSMGl!JF+*_Nw2XzhQ@!(T0!+yC zhG0{?#?q4od>wNDrQ3>9`l_1J)`rG1S)P${K<$VUU|W0;$UbBT$ie^lggiqRXXiu| zld|rOKrj@G^ds{O1An_&8}uZm*yzNGBsd(-eVMy25#p$1Y_IB1I}y_JUdJ+hhQVYC zTD%@y#6y&;6}|SLeaPvXiRIHcKhY$(od6Fm%`4|Xf%><^QA9lnT2 z6NIcu!DWWs*%J(`)T=g)WT+1&Y%h5e}w)nmZ6<)F)SL)6Y7z znX3xb7gEYl6V_m0t{RulYeD0_*0?5fW_>C4DxmP0gEK#<@bi7Z1vAp*B;W%#z_7UA zR^IjB>`7)FiMEw&Ξ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 bC5bHvhggPK#r~-yM6b&E{1Ys$e z5CMUNCSAc$qyi0<$L@8@t3wZopddiIM;&c7LP+g01ZBg(YCY>84|*!^ZX^h4;{j3s|4> zHMI3-V-slqHrP9TNEkLYo&_U4ouBVJtUa~$OrAIwlP3?ai8*sQhLkTPbrOClt|0#6 za2<2IhR%5C}e@6V7qAm+tIQ5ra4InTYhk>@kvD2d%@(_5i)%U>1Jh7(#4v znmAflz+IiHI_Dm;ZM(5Q!jKiRbU1w)o0Y=J$-@!d*78hQS(cCQe`iWdJsd7W+uf@1 z_HuCgX$G%vU|=%U6gJlq$uUUtvLn2{;YdNcw3jNP?CmMSAP~yQDSz8PRmwTnDLp+M zi9|}}Y7kmqV=EyKcUO_Ru>vR=^PEk`pv8V2R}6+!hHf~X@sDiFrU(gv!R5I>;69_v zLUz~X)zxELUvZ=tjitXS**>i83Wwr$4KVlKs#o$B3nTu4bgHjn$a=`Bl=L zZ^Pro_djee4as;AuRMPInDL>?4P|AOL7jLVw{yJrL<}Bv3IzEI76e~kjW`qnVtSk? z1~u+XmMD7p(q2+47;|g911qdTCX*?9V0~lbgzs^m3#q+Sl8T60!1B*H)^X#7Yk@tO z@ZA0F6_bX*wZo;->1k&|fLN(f_1B#>BAiwAC_9^+4A%Dc@|VNDl2y^tLesn_unxna z6v(53f&v6iH`rsWkJ}jEs@*>S_NjutzP|SM$Ct|wqEN1tkqg@^?>kifz|ohWXzqS$<5Z3eEs|FjXxBQkm3zqyU6wsCkEO5g`8i_9mD&%TNW9SbU_ zExOB3XbD`<=*P72>fxW?q8h_su-U;PljCd@NlroGivk5mdcT+F_ zB_`Y6dUUXRbcIvNGts}P4S3u_xm0XvJ$YcFVDcb;2B02tJ~*emA}#HVqg5@rG&@!h zydV8^eWHPAdf&IcP0jQD#S?;(d?5j-FNb^nOXGD_5g0irv=5`3I3!YRaA*H7;Pqwl z4WIsjW({=xJ(aBf8A?UcdG)SQs>cxlqVyty72fQTqv8@ne<ix51syo=UG zV}TM0CA?V}Sn+qv+OI!?DO#Kq5Wa~CQfb=Xe1 zmJ34l&ZV|7U-#}`e0Dul%)P>d^WWvI$9HR5pY^t5xYU~XE72k|->$|RhIw-bf(O8B%Oz08M1_5#CX2c`Y$A7 z+}yfzH2qCG(6T+ceSXaK3A<#8Yjo^`}z4{ zc2+-pJDs-#WcFPdnxNv+k@;)GH(clQef&(!%+i7GM+9~<4G@SZs9B#(y}+LxePf~J z)R1*LAc*L$t}atZNzcc=O z1TCjZDU`I#O!4@H1X$La@62tSoeS*i@6nsV^1@C}7W3bY$ji$YIH2o=!Pl;)naGcAO`yi>@=5++T zZO@=OwlD9$NXy8`?#UadbTx6GsHZBT>lv7FZu9r^y+n?B(PD#GlMF?b^6?YqHihkO ozn8(k((*@f{D1A@-!!vZL?Ev&?bXnMe=wVozPVl*;&#;E0F=;0qW}N^ literal 0 HcmV?d00001 diff --git a/arrowtest4.png b/arrowtest4.png new file mode 100644 index 0000000000000000000000000000000000000000..0f3008e345adb40a8274da09a877ad7228b62b1f GIT binary patch literal 2905 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 literal 0 HcmV?d00001