๐Ÿ“œ Language/[python]

[ํŒŒ์ด์ฌ] ์—ฌ๋Ÿฌ ํŒŒ์ผ ์ด๋ฆ„ ํ•œ๋ฒˆ์— ๋ณ€๊ฒฝํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ(feat. os.rename)

์ œ๋ด‰์•„ 2023. 7. 28. 19:30

๊ณ„๊ธฐ

YOLOํ•™์Šต์„ ์œ„ํ•ด ์ด๋ฏธ์ง€ ๋ผ๋ฒจ๋ง์„ ํ•˜๋‹ˆ, ์ด๋ฏธ์ง€ ์ˆ˜๋ฐฑ ์žฅ์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ด์•ผ ๋˜๋Š” ์ผ์ด ์ƒ๊ฒผ๋‹ค.

ํ•˜๋‚˜ํ•˜๋‚˜ ๋ณ€๊ฒฝํ•˜๋ฉด ๋˜์ง€๋งŒ ๋„ˆ๋ฌด ๊ท€์ฐฎ๊ณ  ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.

ํŒŒ์ด์ฌ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ ๊ฑฐ ๊ฐ™์•„, ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์งœ๋ดค๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์ด๋ผ ํ•˜๊ธฐ์—” ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ์งง๊ธด ํ•˜์ง€๋งŒ, ๋ญ ๋‚ด๊ฐ€ ํ•„์š”์— ์˜ํ•ด ๋งŒ๋“  ๊ฑฐ๋‹ˆ ์œ ์˜๋ฏธํ•˜์ง€ ์•Š์„๊นŒ?๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

์ฝ”๋“œ

import os

#๊ธฐ์กด ์‚ฌ์ง„ ๋ฐฑ์—… ํ•„์ˆ˜!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#๊ธฐ์กด์— ์žˆ๋Š” ์‚ฌ์ง„๋“ค์„ ์‚ญ์ œ๋จ

#๊ธฐ์กด ํŒŒ์ผ ๊ฒฝ๋กœ
folder_path = 'C:\\Users'

#์ƒˆ๋กœ ์ €์žฅ ๊ฒฝ๋กœ (์ •ํ™•ํžˆ ๋งž์•„์•ผ ํ•จ)
dst_path = 'C:\\Users'

#ํด๋”์•ˆ์—์žˆ๋Š” ํŒŒ์ผ๋“ค ์ด๋ฆ„ ๋ฆฌ์ŠคํŠธ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ
file_names = os.listdir(folder_path)

#ํ™•์ธ
print(file_names)

#์ด๋ฏธ์ง€ ๋„˜๋ฒ„๋ง
numbering = 1

for file in file_names:
    f_name, f_format = file.split(sep = '.') #ํŒŒ์ผ ์ด๋ฆ„, ํŒŒ์ผ ํ™•์žฅ์ž split

    if f_format == 'jpg': #์‚ฌ์ง„์ด๋ฉด
        if f_name + '.txt' in file_names: #๋ผ๋ฒจ๋ง์ด ๋œ ์‚ฌ์ง„์ด๋ฉด
            #print(f_name, f_format)
            src_jpg = os.path.join(folder_path, f_name + '.jpg')
            src_txt = os.path.join(folder_path, f_name + '.txt')

            rename_jpg = '3_' + '1_' + str(numbering) + '.jpg' # (ํŒ€์›์ˆœ์„œ)_(์˜์ƒ์ˆœ์„œ)_(์ด๋ฏธ์ง€ ์ˆœ์„œ) + .jpg
            rename_txt = '3_' + '1_' + str(numbering) + '.txt'

            numbering += 1 #๋„˜๋ฒ„๋ง ๋‹ค์Œ
            print(rename_jpg)

            dst_jpg = os.path.join(dst_path, rename_jpg)
            dst_txt = os.path.join(dst_path, rename_txt)

            os.rename(src_jpg, dst_jpg)
            os.rename(src_txt, dst_txt)

์„ค๋ช…

์ผ๋‹จ ์ฒ˜์Œ๋ถ€ํ„ฐ ์–˜๊ธฐํ•ด ๋ณด๋ฉด,

YOLO๋กœ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ ์˜์ƒ์—์„œ ํ”„๋ ˆ์ž„๋‹จ์œ„๋กœ ์ถ”์ถœํ–ˆ๋‹ค.

 

Streamlit

 

www.viconvert.kro.kr:8501

์ถ”์ถœํ•˜๋ฉด 1.jpg, 2.jpg, 3.jpg... ์ด๋Ÿฐ ์‹์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  labelImg๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฏธ์ง€ ๋ผ๋ฒจ๋ง์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ๋ผ๋ฒจ๋ง์„ ํ•˜๋ฉด 1.txt, 2.txt ์ด๋Ÿฐ ํ˜•์‹์œผ๋กœ ๋ผ๋ฒจ๋ง ์ •๋ณด๊ฐ€ txtํŒŒ์ผ์— ์ €์žฅ๋œ๋‹ค.

txtํŒŒ์ผ์—๋Š” ๋ผ๋ฒจ๋ง ํด๋ž˜์Šค, ๋ฐ•์Šค์˜ 4 ๊ผญ์ง“์  ์ขŒํ‘œ๊ฐ€ ์ €์žฅ๋œ๋‹ค.

์ด์ œ jpg์™€ txt๋ฅผ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์‹ถ์–ด ํŒŒ์ด์ฌ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.

 

#๊ธฐ์กด ํŒŒ์ผ ๊ฒฝ๋กœ
folder_path = 'C:\\Users'

#์ƒˆ๋กœ ์ €์žฅ ๊ฒฝ๋กœ (์ •ํ™•ํžˆ ๋งž์•„์•ผ ํ•จ)
dst_path = 'C:\\Users'

#ํด๋”์•ˆ์—์žˆ๋Š” ํŒŒ์ผ๋“ค ์ด๋ฆ„ ๋ฆฌ์ŠคํŠธ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ
file_names = os.listdir(folder_path)

๋จผ์ € ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ธฐ์กด์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์ด ์‚ฌ๋ผ์ง€๋‹ˆ๊นŒ ๋ฐฑ์—… ํ•„์ˆ˜. 

 

๋ฐ”๊พธ๊ณ  ์‹ถ์€ ์‚ฌ์ง„๋“ค์ด ์žˆ๋Š” ํด๋”๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฐ”๊ฟ”์„œ ์ €์žฅํ•  ๊ฒฝ๋กœ๋„ ์ง€์ •ํ•ด ์ค€๋‹ค. ์ œ๋Œ€๋กœ ์•ˆ ํ•˜๋ฉด ์ €์žฅ๊ฒฝ๋กœ๊ฐ€ ๊ผฌ์ธ๋‹ค. 

 

os.listdir์„ ํ†ตํ•ด ํด๋”์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์˜ ์ด๋ฆ„์„ ๋ฆฌ์ŠคํŠธ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.

[1.jpg, 1.txt, 10.jpg, 10.txt, 100.jpg,...]

์ด๋Ÿฐ ์‹์œผ๋กœ ์ˆซ์ž ์ˆœ์„œ๊ฐ€ ์•ˆ ๋งž๊ธด ํ•˜๋Š”๋ฐ ๋‚˜๋Š” ์ด๋ฏธ์ง€ ์ˆœ์„œ๋Š” ๋ณ„๋กœ ์ค‘์š”ํ•˜์ง€ ์•Š์•„ ๊ทธ๋ƒฅ ์ง„ํ–‰ํ–ˆ๋‹ค.

์ˆœ์„œ๋ฅผ ๋งž์ถ”๋ ค๋ฉด ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ์ž‘์„ฑํ•ด์„œํ•˜๋ฉด ๋  ๊ฑฐ ๊ฐ™๋‹ค.

 

#์ด๋ฏธ์ง€ ๋„˜๋ฒ„๋ง
numbering = 1

for file in file_names:
    f_name, f_format = file.split(sep = '.') #ํŒŒ์ผ ์ด๋ฆ„, ํŒŒ์ผ ํ™•์žฅ์ž split

    if f_format == 'jpg': #์‚ฌ์ง„์ด๋ฉด
        if f_name + '.txt' in file_names: #๋ผ๋ฒจ๋ง์ด ๋œ ์‚ฌ์ง„์ด๋ฉด
            #print(f_name, f_format)
            src_jpg = os.path.join(folder_path, f_name + '.jpg')
            src_txt = os.path.join(folder_path, f_name + '.txt')

            rename_jpg = '3_' + '1_' + str(numbering) + '.jpg' # (ํŒ€์›์ˆœ์„œ)_(์˜์ƒ์ˆœ์„œ)_(์ด๋ฏธ์ง€ ์ˆœ์„œ) + .jpg
            rename_txt = '3_' + '1_' + str(numbering) + '.txt'

            numbering += 1 #๋„˜๋ฒ„๋ง ๋‹ค์Œ
            print(rename_jpg)

            dst_jpg = os.path.join(dst_path, rename_jpg)
            dst_txt = os.path.join(dst_path, rename_txt)

            os.rename(src_jpg, dst_jpg)
            os.rename(src_txt, dst_txt)

for์œผ๋กœ ํด๋”์— ์žˆ๋Š” ๊ฐ ํŒŒ์ผ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜จ๋‹ค. ํŒŒ์ผ์€ xxx.xxxํ˜•์‹์ด๋‹ˆ๊นŒ '.'์„ ๊ธฐ์ค€์œผ๋กœ split ํ•ด์ค€๋‹ค.

 

ํด๋”์—๋Š” ๋ผ๋ฒจ๋ง ํ•œ ์‚ฌ์ง„์ด ์žˆ๊ณ , ๋ผ๋ฒจ๋ง ์•ˆ ํ•œ ์‚ฌ์ง„์ด ์žˆ๋‹ค.

๋ผ๋ฒจ๋ง์„ ํ•˜๋ฉด ์‚ฌ์ง„ ํŒŒ์ผ ์ด๋ฆ„๊ณผ ๊ฐ™์€ .txtํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๋‹ˆ๊นŒ, ์ด๋ฅผ ์ด์šฉํ•ด์„œ ๋ผ๋ฒจ๋ง ํ•œ ์‚ฌ์ง„๋“ค์„ ๋ถ„๋ฅ˜ํ•ด ์ค€๋‹ค.

 

ํ™•์ธ ๋์œผ๋ฉด, ๊ธฐ์กด ํŒŒ์ผ๋“ค์˜ ๊ฒฝ๋กœ(src_)๋ฅผ os.path.join์œผ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ๋ฐ”๊พธ๊ณ  ์‹ถ์€ ์ด๋ฆ„(rename_)์œผ๋กœ ๋งŒ๋“ค๊ณ , ์ด๊ฑธ os.path.join์œผ๋กœ ์ƒˆ๋กœ์šด ์ €์žฅ ๊ฒฝ๋กœ(dst)๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.

 

์ด์ œ os.rename์œผ๋กœ ์ด๋ฆ„ ๋ณ€๊ฒฝํ•ด ์ฃผ๋ฉด ๋.

 

๊ฒฐ๊ณผ

 

ํ›„๊ธฐ

์•„์ด๋””์–ด๋„ ๊ฐ„๋‹จํ•˜๊ณ  ๊ตฌํ˜„๋„ ์‰ฝ๋‹ค. ๊ทธ๋ž˜๋„ ๋‚˜๋ฆ„ ์ž๋™ํ™”๋‹ˆ๊นŒ ์œ ์˜๋ฏธํ•˜์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ•œ๋‹ค.

๋ฉ€ํ‹ฐ๋ฒ„์Šค์˜ ๋‚˜๋Š” ํŒŒ์ผ ํ•˜๋‚˜ํ•˜๋‚˜ ํด๋ฆญํ•˜๋ฉฐ ํŒŒ์ผ๋ช…์„ ๋ฐ”๊พธ๊ณ  ์žˆ์„๊นŒ?