質問編集履歴
6
修正
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -22,7 +22,7 @@ 
     | 
|
| 
       22 
22 
     | 
    
         
             
            で実行できるようにしたいです。
         
     | 
| 
       23 
23 
     | 
    
         
             
            もしくはプログラム内でフォルダを指定して、ファルダ内のファイルすべてにプログラムを実行したいです。
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
            ファイルの引数、ファイル取得の関数はできたのですが、#11をどのように書きかえればいいのか分かりません。
         
     | 
| 
      
 25 
     | 
    
         
            +
            ファイルの引数、ファイル取得の関数はできたのですが、#11をどのように書きかえればいいのか分かりません。引数で指定したフォルダ内のファイルを1つ1つループで読み込み、ハミング距離を出力したいです。
         
     | 
| 
       26 
26 
     | 
    
         
             
            どなたか詳しい方、ご助力お願いいたします。
         
     | 
| 
       27 
27 
     | 
    
         
             
            ```
         
     | 
| 
       28 
28 
     | 
    
         
             
            #11---関数の呼び出し
         
     | 
5
修正
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -22,13 +22,7 @@ 
     | 
|
| 
       22 
22 
     | 
    
         
             
            で実行できるようにしたいです。
         
     | 
| 
       23 
23 
     | 
    
         
             
            もしくはプログラム内でフォルダを指定して、ファルダ内のファイルすべてにプログラムを実行したいです。
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
            ```python
         
     | 
| 
       27 
     | 
    
         
            -
            import sys
         
     | 
| 
       28 
     | 
    
         
            -
            sys.argv
         
     | 
| 
       29 
     | 
    
         
            -
            ```
         
     | 
| 
       30 
     | 
    
         
            -
            を使ってできそうな気がするのですが。
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
            ファイルの引数、ファイル取得の関数はできたのですが、#11をどのように書きかえればいいのか分かりません。
         
     | 
| 
       32 
26 
     | 
    
         
             
            どなたか詳しい方、ご助力お願いいたします。
         
     | 
| 
       33 
27 
     | 
    
         
             
            ```
         
     | 
| 
       34 
28 
     | 
    
         
             
            #11---関数の呼び出し
         
     | 
| 
         @@ -43,7 +37,28 @@ 
     | 
|
| 
       43 
37 
     | 
    
         
             
            from PIL import Image
         
     | 
| 
       44 
38 
     | 
    
         
             
            import numpy as np
         
     | 
| 
       45 
39 
     | 
    
         
             
            import os, re
         
     | 
| 
      
 40 
     | 
    
         
            +
            import argparse
         
     | 
| 
      
 41 
     | 
    
         
            +
            import sys
         
     | 
| 
      
 42 
     | 
    
         
            +
            import pathlib
         
     | 
| 
       46 
43 
     | 
    
         | 
| 
      
 44 
     | 
    
         
            +
            def get_filenames_of_path(path: pathlib.Path, ext: str = "*"):
         
     | 
| 
      
 45 
     | 
    
         
            +
                """Returns a list of files in a directory/path. Uses pathlib."""
         
     | 
| 
      
 46 
     | 
    
         
            +
                filenames = [file for file in path.glob(ext) if file.is_file()]
         
     | 
| 
      
 47 
     | 
    
         
            +
                filenames.sort()
         
     | 
| 
      
 48 
     | 
    
         
            +
                return filenames
         
     | 
| 
      
 49 
     | 
    
         
            +
              
         
     | 
| 
      
 50 
     | 
    
         
            +
            def get_args():
         
     | 
| 
      
 51 
     | 
    
         
            +
                parser = argparse.ArgumentParser(description='Evaluate result',
         
     | 
| 
      
 52 
     | 
    
         
            +
                                                 formatter_class=argparse.ArgumentDefaultsHelpFormatter)
         
     | 
| 
      
 53 
     | 
    
         
            +
                parser.add_argument('target_dir', type=str)
         
     | 
| 
      
 54 
     | 
    
         
            +
                parser.add_argument('result_dir', type=str)
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                return parser.parse_args()
         
     | 
| 
      
 57 
     | 
    
         
            +
            args = get_args()
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
            result_dir = pathlib.Path.cwd() / args.result_dir
         
     | 
| 
      
 60 
     | 
    
         
            +
            target_dir = pathlib.Path.cwd() / args.target_dir
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
       47 
62 
     | 
    
         
             
            #1---Average Hashの取得
         
     | 
| 
       48 
63 
     | 
    
         
             
            def average_hash(fname, size = 256):
         
     | 
| 
       49 
64 
     | 
    
         
             
            #2---画像データを開く
         
     | 
| 
         @@ -72,10 +87,11 @@ 
     | 
|
| 
       72 
87 
     | 
    
         
             
                dist1 = (aa != ac).sum()
         
     | 
| 
       73 
88 
     | 
    
         
             
                return dist,dist1
         
     | 
| 
       74 
89 
     | 
    
         
             
            #11---関数の呼び出し
         
     | 
| 
       75 
     | 
    
         
            -
            ahash = average_hash(' 
     | 
| 
      
 90 
     | 
    
         
            +
            ahash = average_hash('test4_out_bara/a/02/00353_00354_01.png')
         
     | 
| 
       76 
     | 
    
         
            -
            ahash1 = average_hash(' 
     | 
| 
      
 91 
     | 
    
         
            +
            ahash1 = average_hash('test4_out_bara/a/02/00353_00354_01.png')
         
     | 
| 
       77 
     | 
    
         
            -
            ahash2 = average_hash(' 
     | 
| 
      
 92 
     | 
    
         
            +
            ahash2 = average_hash('test4_mask_bara/02/Target/out48_02.png')
         
     | 
| 
       78 
93 
     | 
    
         
             
            hamming_ab,hamming_ac = hamming_dist(ahash,ahash1,ahash2)
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
       79 
95 
     | 
    
         
             
            #12---出力結果
         
     | 
| 
       80 
96 
     | 
    
         
             
            print(ahash)
         
     | 
| 
       81 
97 
     | 
    
         
             
            print("*****")
         
     | 
4
修正
    
        title	
    CHANGED
    
    | 
         @@ -1,1 +1,1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ファ 
     | 
| 
      
 1 
     | 
    
         
            +
            ファルダ名を引数にして、ファルダ内のすべてのファイルにプログラムを実行させるように修正したい
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -1,30 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            やりたいこと
         
     | 
| 
       1 
     | 
    
         
            -
            プログラム 
     | 
| 
      
 2 
     | 
    
         
            +
            ①プログラム実行時に引数をファルダ名にする、もしくはプログラム内でフォルダを指定
         
     | 
| 
      
 3 
     | 
    
         
            +
            ②ファルダ内すべてのpngファイルにプログラムを実行
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       2 
5 
     | 
    
         
             
            下のコードはグレースケールで画像を読み込んで、ハミング距離を出力するプログラムです。
         
     | 
| 
       3 
6 
     | 
    
         
             
            このプログラムの実行は
         
     | 
| 
       4 
7 
     | 
    
         
             
            ```
         
     | 
| 
       5 
     | 
    
         
            -
            入力:
         
     | 
| 
       6 
     | 
    
         
            -
            python test.py
         
     | 
| 
      
 8 
     | 
    
         
            +
            入力:$python test.py
         
     | 
| 
       7 
     | 
    
         
            -
            出力:
         
     | 
| 
       8 
     | 
    
         
            -
            [0 1 0 1 0 . . . 0]
         
     | 
| 
      
 9 
     | 
    
         
            +
            出力:[0 1 0 1 0 . . . 0]
         
     | 
| 
       9 
     | 
    
         
            -
            ・
         
     | 
| 
      
 10 
     | 
    
         
            +
                   ・
         
     | 
| 
       10 
     | 
    
         
            -
            ・
         
     | 
| 
      
 11 
     | 
    
         
            +
                   ・
         
     | 
| 
       11 
     | 
    
         
            -
            ・
         
     | 
| 
      
 12 
     | 
    
         
            +
                   ・
         
     | 
| 
       12 
13 
     | 
    
         
             
            ハミング距離:7159
         
     | 
| 
       13 
14 
     | 
    
         
             
            ハミング距離:19430
         
     | 
| 
       14 
15 
     | 
    
         
             
            ```
         
     | 
| 
       15 
16 
     | 
    
         
             
            となります。
         
     | 
| 
       16 
     | 
    
         
            -
            これをフ 
     | 
| 
      
 17 
     | 
    
         
            +
            これをフォルダの引数をとって、
         
     | 
| 
       17 
18 
     | 
    
         
             
            ```
         
     | 
| 
       18 
19 
     | 
    
         
             
            入力:
         
     | 
| 
       19 
     | 
    
         
            -
            python test.py  
     | 
| 
      
 20 
     | 
    
         
            +
            python test.py fold1 fold2 fold3
         
     | 
| 
       20 
21 
     | 
    
         
             
            ```
         
     | 
| 
       21 
22 
     | 
    
         
             
            で実行できるようにしたいです。
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
      
 23 
     | 
    
         
            +
            もしくはプログラム内でフォルダを指定して、ファルダ内のファイルすべてにプログラムを実行したいです。
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
       23 
26 
     | 
    
         
             
            ```python
         
     | 
| 
       24 
27 
     | 
    
         
             
            import sys
         
     | 
| 
       25 
28 
     | 
    
         
             
            sys.argv
         
     | 
| 
       26 
29 
     | 
    
         
             
            ```
         
     | 
| 
       27 
30 
     | 
    
         
             
            を使ってできそうな気がするのですが。
         
     | 
| 
      
 31 
     | 
    
         
            +
            下の部分を変更するばできそうな気がするのですが、よく分かりません。
         
     | 
| 
      
 32 
     | 
    
         
            +
            どなたか詳しい方、ご助力お願いいたします。
         
     | 
| 
       28 
33 
     | 
    
         
             
            ```
         
     | 
| 
       29 
34 
     | 
    
         
             
            #11---関数の呼び出し
         
     | 
| 
       30 
35 
     | 
    
         
             
            ahash = average_hash('test1_2D_out/000002_OUT.png')
         
     | 
3
補足
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -19,8 +19,13 @@ 
     | 
|
| 
       19 
19 
     | 
    
         
             
            python test.py file1 file2 file3
         
     | 
| 
       20 
20 
     | 
    
         
             
            ```
         
     | 
| 
       21 
21 
     | 
    
         
             
            で実行できるようにしたいです。
         
     | 
| 
      
 22 
     | 
    
         
            +
            この部分を
         
     | 
| 
      
 23 
     | 
    
         
            +
            ```python
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
            import sys
         
     | 
| 
      
 25 
     | 
    
         
            +
            sys.argv
         
     | 
| 
       23 
26 
     | 
    
         
             
            ```
         
     | 
| 
      
 27 
     | 
    
         
            +
            を使ってできそうな気がするのですが。
         
     | 
| 
      
 28 
     | 
    
         
            +
            ```
         
     | 
| 
       24 
29 
     | 
    
         
             
            #11---関数の呼び出し
         
     | 
| 
       25 
30 
     | 
    
         
             
            ahash = average_hash('test1_2D_out/000002_OUT.png')
         
     | 
| 
       26 
31 
     | 
    
         
             
            ahash1 = average_hash('test1_2D_out/000003_OUT.png')
         
     | 
2
補足
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -16,7 +16,7 @@ 
     | 
|
| 
       16 
16 
     | 
    
         
             
            これをファイルの引数をとって、
         
     | 
| 
       17 
17 
     | 
    
         
             
            ```
         
     | 
| 
       18 
18 
     | 
    
         
             
            入力:
         
     | 
| 
       19 
     | 
    
         
            -
            python test.py file1 file2
         
     | 
| 
      
 19 
     | 
    
         
            +
            python test.py file1 file2 file3
         
     | 
| 
       20 
20 
     | 
    
         
             
            ```
         
     | 
| 
       21 
21 
     | 
    
         
             
            で実行できるようにしたいです。
         
     | 
| 
       22 
22 
     | 
    
         
             
            この部分を import sysを使って変えればできそうなのですが。。
         
     | 
1
補足
    
        title	
    CHANGED
    
    | 
         @@ -1,1 +1,1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ファイルを引数にするプログラムに修正したい
         
     | 
| 
      
 1 
     | 
    
         
            +
            ファイル名を引数にするプログラムに修正したい
         
     | 
    
        body	
    CHANGED
    
    | 
         
            File without changes
         
     |