質問編集履歴

2

コード修正しました。

2019/11/19 04:31

投稿

reonald
reonald

スコア32

test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- files = glob.glob("./p1/./1/*")
21
+ files = glob.glob("./3/./1.2/*")
22
22
 
23
23
  for f in files:
24
24
 
@@ -98,7 +98,11 @@
98
98
 
99
99
  if mean < 170:
100
100
 
101
- cv2.imwrite('./phyto/debug_%d.jpg' % i, im2)
101
+ save_path = './phyto/debug_%d.jpg' % i
102
+
103
+ print(save_path)
104
+
105
+ cv2.imwrite(save_path, im2)
102
106
 
103
107
  else :
104
108
 
@@ -116,27 +120,69 @@
116
120
 
117
121
  elif 100 < a < 250:
118
122
 
119
- cv2.imwrite('./pu1/debug_%d.jpg' % i, im2)
123
+ save_path = './pu1/debug_%d.jpg' % i
124
+
125
+ print(save_path)
126
+
127
+ cv2.imwrite(save_path, im2)
120
128
 
121
129
  elif 250 < a < 400:
122
130
 
123
- cv2.imwrite('./pu2/debug_%d.jpg' % i, im2)
131
+ save_path = './pu2/debug_%d.jpg' % i
132
+
133
+ print(save_path)
134
+
135
+ cv2.imwrite(save_path, im2)
124
136
 
125
137
  elif 400 < a :
126
138
 
127
- cv2.imwrite('./pu3/debug_%d.jpg' % i, im2)
139
+ save_path = './pu3/debug_%d.jpg' % i
140
+
141
+ print(save_path)
142
+
143
+ cv2.imwrite(save_path, im2)
128
144
 
129
145
  コード
130
146
 
131
147
  ```
132
148
 
149
+
150
+
133
- となっているのですが,
151
+ となっているのですが,実行すると,
152
+
153
+ 133 149 149 大きさ:0.10081190798376183
154
+
155
+ ./pu1/debug_0.jpg
156
+
157
+ 111 95 111 大きさ:0.07510148849797023
158
+
159
+ ./pu1/debug_0.jpg
160
+
161
+ ./phyto/debug_1.jpg
162
+
163
+ 127 59 127 大きさ:0.08592692828146144
164
+
165
+ ./pu1/debug_2.jpg
166
+
167
+ 809 598 809 大きさ:0.547361299052774
168
+
169
+ ./pu3/debug_3.jpg
170
+
171
+ 118 202 202 大きさ:0.13667117726657646
172
+
173
+ ./pu1/debug_0.jpg
174
+
175
+ 93 104 104 大きさ:0.07036535859269283
176
+
177
+ ./pu1/debug_0.jpg
178
+
179
+ となり,
134
180
 
135
181
  保存するときにdebug0.jpgなどが上書きされてしまっております。
136
182
 
137
- 保存するとき名前に1つ目のforの処理の番号入れれば解決すると思うのですが,
183
+ おそらく,初めのforの処理をするときに,毎回debug_0.jpgという名前で保存するプログラムになってしまっていると思うのですが,
138
184
 
139
- どのようコードにすればよが分かりません
185
+ 初めのforのでn番目の画像処理をするときにdebug-n_0.jpgなどの名前で保存することはできないでしょうか。
140
186
 
141
187
  コード修正宜しくお願いします。
142
188
 

1

コード修正しました。

2019/11/19 04:31

投稿

reonald
reonald

スコア32

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,8 @@
1
1
  現在のコードとして,
2
2
 
3
+ ```
4
+
3
- ```from pathlib import Path
5
+ from pathlib import Path
4
6
 
5
7
  import cv2
6
8
 
@@ -10,129 +12,133 @@
10
12
 
11
13
  import matplotlib.pyplot as plt
12
14
 
15
+ import glob
13
16
 
14
17
 
15
18
 
16
19
 
17
20
 
21
+ files = glob.glob("./p1/./1/*")
18
22
 
19
- img = cv2.imread('./p1/./1/S__433733663.jpg')
23
+ for f in files:
20
24
 
21
- cut = img[460:1270, 130:940]
25
+ img = cv2.imread(f)
22
26
 
27
+ cut = img[460:1270, 130:940]
28
+
23
- z=1*810/1478
29
+ z=1*810/1478
24
30
 
25
31
 
26
32
 
27
- gray = cv2.cvtColor(cut, cv2.COLOR_BGR2GRAY)
33
+ gray = cv2.cvtColor(cut, cv2.COLOR_BGR2GRAY)
28
34
 
29
- ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
35
+ ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
30
36
 
31
37
 
32
38
 
33
- kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
39
+ kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
34
40
 
35
- binary = cv2.dilate(binary, kernel)
41
+ binary = cv2.dilate(binary, kernel)
36
42
 
37
- contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
43
+ contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
38
44
 
39
45
 
40
46
 
41
47
 
42
48
 
43
- rects = []
49
+ rects = []
44
50
 
45
- for cnt in contours:
51
+ for cnt in contours:
46
52
 
47
- if cv2.contourArea(cnt) < 4000:
53
+ if cv2.contourArea(cnt) < 4000:
48
54
 
49
- continue
55
+ continue
50
56
 
51
57
 
52
58
 
53
- rect = cv2.minAreaRect(cnt)
59
+ rect = cv2.minAreaRect(cnt)
54
60
 
55
- rects.append(rect)
61
+ rects.append(rect)
56
62
 
57
63
 
58
64
 
59
- def crop(cut, rect):
65
+ def crop(cut, rect):
60
66
 
61
- center, size, angle = rect
67
+ center, size, angle = rect
62
68
 
63
- center = tuple(map(int, center))
69
+ center = tuple(map(int, center))
64
70
 
65
- size = tuple(map(int, size))
71
+ size = tuple(map(int, size))
66
72
 
67
- j, k = cut.shape[:2]
73
+ j, k = cut.shape[:2]
68
74
 
69
- M = cv2.getRotationMatrix2D(center, angle, 1)
75
+ M = cv2.getRotationMatrix2D(center, angle, 1)
70
76
 
71
- rotated = cv2.warpAffine(cut, M, (k, j))
77
+ rotated = cv2.warpAffine(cut, M, (k, j))
72
78
 
73
79
 
74
80
 
75
- im2 = cv2.getRectSubPix(rotated, size, center)
81
+ im2 = cv2.getRectSubPix(rotated, size, center)
76
82
 
77
- return im2
83
+ return im2
78
84
 
79
85
 
80
86
 
81
87
 
82
88
 
83
- for i, rect in enumerate(rects):
89
+ for i, rect in enumerate(rects):
84
90
 
85
- im2 = crop(cut, rect)
91
+ im2 = crop(cut, rect)
86
92
 
87
- hsv = cv2.cvtColor(im2, cv2.COLOR_BGR2HSV)
93
+ hsv = cv2.cvtColor(im2, cv2.COLOR_BGR2HSV)
88
94
 
89
- h, s, v = cv2.split(hsv)
95
+ h, s, v = cv2.split(hsv)
90
96
 
91
- mean = v[v < 230].mean()
97
+ mean = v[v < 230].mean()
92
98
 
93
- if mean < 170:
99
+ if mean < 170:
94
100
 
95
- cv2.imwrite('./phyto/debug_%d.jpg' % i, im2)
101
+ cv2.imwrite('./phyto/debug_%d.jpg' % i, im2)
96
102
 
97
- else :
103
+ else :
98
104
 
99
- y, x = im2.shape[:2]
105
+ y, x = im2.shape[:2]
100
106
 
101
- a=max(y,x)
107
+ a=max(y,x)
102
108
 
103
- b=z*a/810
109
+ b=z*a/810
104
110
 
105
- print('','',y,x,a,'大きさ:{0}'.format(b))
111
+ print('','',y,x,a,'大きさ:{0}'.format(b))
106
112
 
107
- if a < 100:
113
+ if a < 100:
108
114
 
109
- continue
115
+ continue
110
116
 
111
- elif 100 < a < 250:
117
+ elif 100 < a < 250:
112
118
 
113
- cv2.imwrite('./pu1/debug_%d.jpg' % i, im2)
119
+ cv2.imwrite('./pu1/debug_%d.jpg' % i, im2)
114
120
 
115
- elif 250 < a < 400:
121
+ elif 250 < a < 400:
116
122
 
117
- cv2.imwrite('./pu2/debug_%d.jpg' % i, im2)
123
+ cv2.imwrite('./pu2/debug_%d.jpg' % i, im2)
118
124
 
119
- elif 400 < a :
125
+ elif 400 < a :
120
126
 
121
- cv2.imwrite('./pu3/debug_%d.jpg' % i, im2)
127
+ cv2.imwrite('./pu3/debug_%d.jpg' % i, im2)
122
128
 
123
129
  コード
124
130
 
125
131
  ```
126
132
 
127
- となっており,これはp1ファイルの1とうファイルの中の画像を選んで,処理しているのですが,
133
+ となっているのですが,
128
134
 
129
- をp1の1のファイルの中の画像全に対て一括で処理したいとおもっております。
135
+ 保存するときにdebug0.jpgなどが上書きされてしっております。
130
136
 
131
- プログラム内容としては,画像をリサイズし,二値化などした後,回転矩形を切り出し,hsvよって分類,そ後,大きさによ分類し,ファイルへ保存なっておりま
137
+ 保存するとき名前1つ目forの処理の番号を入れれば解決すると思うのでが,
132
138
 
139
+ どのようなコードにすればよいのかが分かりません。
133
140
 
134
-
135
- どなたかよろしくお願いします。
141
+ コード修正宜しくお願いします。
136
142
 
137
143
 
138
144