質問編集履歴
2
コード修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
files = glob.glob("./
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
183
|
+
おそらく,初めのforの処理をするときに,毎回debug_0.jpgという名前で保存するプログラムになってしまっていると思うのですが,
|
138
184
|
|
139
|
-
どの
|
185
|
+
初めのforのでn番目の画像処理をするときにdebug-n_0.jpgなどの名前で保存することはできないでしょうか。
|
140
186
|
|
141
187
|
コード修正宜しくお願いします。
|
142
188
|
|
1
コード修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
現在のコードとして,
|
2
2
|
|
3
|
+
```
|
4
|
+
|
3
|
-
|
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
|
-
|
23
|
+
for f in files:
|
20
24
|
|
21
|
-
|
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
|
-
となって
|
133
|
+
となっているのですが,
|
128
134
|
|
129
|
-
|
135
|
+
保存するときにdebug0.jpgなどが上書きされてしまっております。
|
130
136
|
|
131
|
-
|
137
|
+
保存するときの名前に1つ目のforの処理の番号を入れれば解決すると思うのですが,
|
132
138
|
|
139
|
+
どのようなコードにすればよいのかが分かりません。
|
133
140
|
|
134
|
-
|
135
|
-
|
141
|
+
コード修正宜しくお願いします。
|
136
142
|
|
137
143
|
|
138
144
|
|