一括で保存する/しないなら、次のように書けばいいです。
Python
1img_rgb = cv2.rectangle(self.img_RGB, (0, 0), (130, 110), (0, 0, 0), -1)
2img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
3ret_val, img_thresh = cv2.threshold(img_gray, 135, 255, 0)
4img_contours, contours, hierarchy = cv2.findContours(img_thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
5
6if need_to_save:
7 cv2.imwrite("./image/img_rgb.jpg", img_rgb)
8 cv2.imwrite("./image/gray.jpg", img_gray)
9 cv2.imwrite("./image/img_thresh.jpg", img_thresh)
10 cv2.imwrite("./image/img_contours.jpg", img_contours)
あとは、need_to_saveの指定の仕方を考えるだけです。
・ コード内に埋め込んでしまう
・ 保存するかどうか(y/n)入力を求める
・ オプションをコマンドラインで設定できるようにする
上にいくほど簡単/愚直で、下にいくほど柔軟/面倒な設計です。
一応、コマンドライン引数のサンプルを置いておきます。
Python
1# hoge.py
2
3import argparse
4
5parser = argparse.ArgumentParser()
6parser.add_argument('-s', '--save', nargs='?', const='./image')
7args = parser.parse_args()
8
9if args.save:
10 print(args.save)
11
12"""実行例
13>python hoge.py
14
15>python hoge.py --save
16./image
17
18>python hoge.py --save "./result"
19./result
20"""
ついでに、画像保存時のフォーマットも指定できるようにしてみたり。
Python
1import argparse
2
3parser = argparse.ArgumentParser()
4parser.add_argument('-s', '--save', nargs='?', const='./image')
5parser.add_argument('-f', '--format', default='jpg')
6args = parser.parse_args()
7
8if args.save:
9 print(args.save)
10
11print(args.format)
12
13"""実行例
14>python hoge.py --save "./result"
15./result
16jpg
17
18>python hoge.py --save "./result" --format png
19./result
20png
21"""
追記
かなり愚直な方法ではありますが、一個一個オプションを作るのが簡単でしょう。
Python
1import argparse
2
3parser = argparse.ArgumentParser()
4parser.add_argument('--s_rgb', action='store_true')
5parser.add_argument('--s_gray', action='store_true')
6parser.add_argument('--s_thresh', action='store_true')
7parser.add_argument('--s_contours', action='store_true')
8parser.add_argument('--s_all', action='store_true')
9args = parser.parse_args()
10
11if args.s_all or args.s_rgb:
12 print('save rgb')
13if args.s_all or args.s_gray:
14 print('save gray')
15if args.s_all or args.s_thresh:
16 print('save thresh')
17if args.s_all or args.s_contours:
18 print('save contours')
19
20"""実行例
21>python hoge.py
22
23>python hoge.py --s_all
24save rgb
25save gray
26save thresh
27save contours
28
29>python hoge.py --s_rgb --s_contours
30save rgb
31save contours
32"""
集合形式で引数を与えた方が綺麗そうですね。なんかいい方法あるのかな...
↓ ありました
さらに追記
こいつでどうだ。
Python
1import argparse
2
3parser = argparse.ArgumentParser()
4parser.add_argument('-s', '--save_set', default={})
5args = parser.parse_args()
6
7if 'r' in args.save_set:
8 print('save rgb')
9if 'g' in args.save_set:
10 print('save gray')
11if 't' in args.save_set:
12 print('save thresh')
13if 'c' in args.save_set:
14 print('save contours')
15
16"""実行例
17>python hoge.py -s rc
18save rgb
19save contours
20
21>python hoge.py
22
23>python hoge.py -s r
24save rgb
25"""
こういう風にすれば、『全部保存』という指定も出来ます。...1文字しか減ってませんが。
Python
1parser.add_argument('-s', '--save_set', type=(lambda s: 'rgtc' if s == 'all' else s), default='')
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/10/09 04:54
2017/10/09 05:18
退会済みユーザー
2017/10/09 15:10