From 543114f91fbbd32d6b04ed943963d5c1a9fb1415 Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 26 Oct 2018 14:37:35 -0400 Subject: [PATCH] fix paths.py issue --- demo_images/folder with spaces/bridge.jpg | Bin 0 -> 40682 bytes demos/image_paths.py | 22 ++++++++++++++++++++++ imutils/paths.py | 12 ++++++++---- 3 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 demo_images/folder with spaces/bridge.jpg diff --git a/demo_images/folder with spaces/bridge.jpg b/demo_images/folder with spaces/bridge.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9ab99cdad5c6bf41fd58d612dffe11abf0541653 GIT binary patch literal 40682 zcma%ibx>SQ^yT30?(XgyoWb2)1|K{)1b1g}65L%rJXnIey9H)&2@o`pu-V07L))AoLj^p*r6a)M z0pRiA5b)sMM*vj-06YTRKl``P|7(ay@Ce9o02EX>!2jFv@0$?-h)Bq|0C+eAcqI6L zfk+6502H`?ems0c03Dw!JpqyqvW*u%VMK-;14=1T>o;9n#>Gg1n*(q8TS%K8NKlCQ zU-JJw{@-T&o9p3xN4A z5FQT!4FC$mmaIE;e_W?J&#o>L&(UeQwG3ibegnbADQt#? zsO6Nr7?W2xa_j}A)wG2)q{vmTwK%BOZw&QJ3plj`!hG(GZ%?3-WGR%Mwt_lYfukz1 zgU>6Qbp6JKv!673>nE0DwOn5cMzn;EQ`JD+K;|HVGzbALM`Jj~+FlQWcGz0)sRkdd z$mnx*Kd*Od)HI%Qa)1m{wQl>Eipfu`Rg0B%w|1F3m$+2YmSQGiju#!7^l8>Kx-zFz zZcZ|*GwGAF2FBz*$9()3f+yBz)riWgwuJB+c0&Dhz)3$?({w1xCbcyWfew?Vt|ZFz zr$sxGot?%*I2vb&j~oKOQ%SfMah@IbqQO$#L2vhHm^e%U?cv?=UnL4(Pw-{j6`7-swqETO8 zr=>gD9Vs4rU^BtC`3vaOE?|S*AD1E{LauBpO@5$n-rsMf(Z%m(iTB(YRlkqrUIn=asX~c%~$7D=&Gv@R3ac*7(A2 z4la!vGDJ+d@#OZ-UJoyCbXRCv@>Y5OSFkE{bh}efzmYr4KXBlIC+OOZ*Aw7ZeFiR1ulB~(;zo|G&UQX)GB8*-hn4^L1yO}1bENRU(v%SmGNW|B z<4z@d>~`Y1P5JlCih%KJ@D>-tAOU$GjhhzqA}%q5Wp_GL6eKL0y!?2+ZxGN}QECqhk`2h}F& zH0sCdXTN30Xzjg09_!dEI8~AWW{wBO-svdi>9hZ2T(VXnPlD1~Fgmp9y#ux-0e|yw zo!-R8fPr2mIiif-`M5{A%7t|^red7;>S1#1(&_@gpsHtUNnF5Cw4Hg67J2F5& zg##d`G7yb;-?ji|piX$)H_5AWD3$t`v>Bqh;PfpKW3|4_c2Pt_kaj5F1dW`;qvDg& zLeLq6w|>%*S@7oHCB_G@+Vl?S;_W;v>u67#)=bwWcrB+9nEE32rcew{SM#^)%`QQf zh>TQr*!C7mUyYy48hw)Pek)?k^PmCGkQ7KJ`)5GVl+zV=RN-~XU8v%yE=r~p1c=f< zjbFXJ^})U<p?H(vW*u?=bpmf<5DI zZCqLhVI?kg5(9gCO{Kl~vNq$0V|W|!d}Zrusd~0+xwMS4C&H8uH8rvtFI3gM6En%2 zi$$CFHa0-0(Y-R*ZaOgYKNT&Os$#JJ8H#j1-nITGla7 zneOZj8{C;o5X^~6ZkCS9yn3Tl7`+O_!M%?E5xG3frQDB1l+VuU

mGUO3C4HK>(Z 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 F|JnNW=y(7C literal 0 HcmV?d00001 diff --git a/demos/image_paths.py b/demos/image_paths.py index ae85601..a79946e 100644 --- a/demos/image_paths.py +++ b/demos/image_paths.py @@ -1,11 +1,33 @@ # author: Adrian Rosebrock # website: http://www.pyimagesearch.com +# Updated by Tim Poulsen, @skypanther + +# USAGE +# from the demos folder: +# python image_paths.py # import the necessary packages from __future__ import print_function +# You'll need to force '../imutils' into the system path if testing +# before this addition is merged into the imutils library so that you +# load the local package not the one installed on your system. +# sys.path.insert(0, '../imutils') +# import sys from imutils import paths # loop over the image paths in the previous 'demo_images' # directory and print the paths to the terminal for imagePath in paths.list_images("../demo_images"): print(imagePath) + +print('\nUsing `list_files` with a jpg file extension filter:\n') + +# validExts must be a tuple +for imagePath in paths.list_files("../demo_images", validExts=('.jpg',)): + print(imagePath) + +print('\nUsing `list_files` with a contains filter:\n') + +# validExts must be a tuple +for imagePath in paths.list_files("../demo_images", contains='bridge'): + print(imagePath) diff --git a/imutils/paths.py b/imutils/paths.py index 8bcdf79..5e60640 100644 --- a/imutils/paths.py +++ b/imutils/paths.py @@ -1,11 +1,15 @@ # import the necessary packages import os +image_types = (".jpg", ".jpeg", ".png", ".bmp", ".tif", ".tiff") + + def list_images(basePath, contains=None): # return the set of files that are valid - return list_files(basePath, validExts=(".jpg", ".jpeg", ".png", ".bmp", ".tif", ".tiff"), contains=contains) + return list_files(basePath, validExts=image_types, contains=contains) + -def list_files(basePath, validExts=(".jpg", ".jpeg", ".png", ".bmp", ".tif", ".tiff"), contains=None): +def list_files(basePath, validExts=None, contains=None): # loop over the directory structure for (rootDir, dirNames, filenames) in os.walk(basePath): # loop over the filenames in the current directory @@ -19,7 +23,7 @@ def list_files(basePath, validExts=(".jpg", ".jpeg", ".png", ".bmp", ".tif", ".t ext = filename[filename.rfind("."):].lower() # check to see if the file is an image and should be processed - if ext.endswith(validExts): + if validExts is None or ext.endswith(validExts): # construct the path to the image and yield it - imagePath = os.path.join(rootDir, filename).replace(" ", "\\ ") + imagePath = os.path.join(rootDir, filename) yield imagePath