回答編集履歴

1

修正

2021/07/23 22:44

投稿

beatbox4108
beatbox4108

スコア48

test CHANGED
@@ -1,155 +1,33 @@
1
1
  ループで上書きが起こっています
2
2
 
3
- ```diff
3
+ ```python
4
4
 
5
- import os
5
+ a = lb + aaa
6
6
 
7
- import cv2
7
+ b = lg + bbb #bに代入
8
8
 
9
- import shutil
9
+ c = lr + ccc #cに代入
10
10
 
11
- import glob
11
+ ```
12
-
13
- import numpy as np
14
-
15
- from time import sleep
16
-
17
- from PIL import Image
18
12
 
19
13
 
20
14
 
21
- cwd = os.getcwd()
15
+ ここで定義をしていますが、
22
16
 
17
+ ```python
23
18
 
24
-
25
- #file name
26
-
27
- img_dir = "E:/b/"
28
-
29
- out = "output"
30
-
31
-
32
-
33
- #Lower param
34
-
35
- lb = 34
36
-
37
- lg = 3
38
-
39
- lr = 53
40
-
41
-
42
-
43
- #Upper param
44
-
45
- ub = 114
46
-
47
- ug = 75
48
-
49
- ur = 150
50
-
51
-
52
-
53
- #Threshold
54
-
55
- lower = 200
56
-
57
- upper = 1500
58
-
59
-
60
-
61
- def test():
62
-
63
- path = glob.glob(img_dir + "/*png")
64
-
65
- outPath = img_dir + "/" + out
66
-
67
- os.makedirs(outPath, exist_ok=True)
68
-
69
- for aaa in range (55):
70
-
71
- for bbb in range(36):
72
-
73
- for ccc in range(48):
74
-
75
- for i in path:
76
-
77
- a = lb + aaa
78
-
79
- b = lg + bbb #bに代入
80
-
81
- c = lr + ccc #cに代入
82
-
83
- name = os.path.basename(i)
84
-
85
- image = cv2.imread(i) # ファイル読み込み
86
-
87
- bgrLower = np.array([a, b, c]) # 抽出する色の下限
88
-
89
- bgrUpper = np.array([ub, ug, ur]) # 抽出する色の上限
90
-
91
- bgrResult = bgrExtraction(image, bgrLower, bgrUpper)
92
-
93
- w,h,c = bgrResult.shape #cを上書きしている
19
+ w,h,c = bgrResult.shape #cを上書きしている
94
-
95
-
96
-
97
- count = 0
98
-
99
- #全画素を探索してクロ以外の画素をカウント upper以上になったらストップ
100
-
101
- for i in range(w):
102
-
103
- for j in range(h):
104
-
105
- imgdata = bgrResult[i,j]
106
-
107
- b,g,r = imgdata #bを上書きしている
108
-
109
- if b != 0 and g != 0 and r !=0:
110
-
111
- count += 1
112
-
113
- elif count == upper:
114
-
115
- break
116
-
117
- else:
118
-
119
- continue
120
-
121
- break
122
-
123
-
124
-
125
- #lower以上 uppr以下 であれば画像を保存
126
-
127
- if count < lower and count > upper:
128
-
129
- continue
130
-
131
- cv2.imwrite(os.path.join(outPath , str(a) + "." + str(b) + "." + str(c) + "-" + name ),bgrResult)
132
-
133
- print(os.path.join(outPath , str(a) + "." + str(b) + "." + str(c) + "-" + name ))
134
-
135
-
136
-
137
- # BGRで特定の色を抽出する関数
138
-
139
- def bgrExtraction(image, bgrLower, bgrUpper):
140
-
141
- img_mask = cv2.inRange(image, bgrLower, bgrUpper) # BGRからマスクを作成
142
-
143
- result = cv2.bitwise_and(image, image, mask=img_mask) # 元画像とマスクを合成
144
-
145
- return result
146
-
147
-
148
-
149
- if __name__ == '__main__':
150
-
151
- test()
152
-
153
-
154
20
 
155
21
  ```
22
+
23
+ や、
24
+
25
+ ```python
26
+
27
+ b,g,r = imgdata #bを上書きしている
28
+
29
+ ```
30
+
31
+ で上書きをしています。
32
+
33
+ 変数名の重複を防ぐため、変数名を変えてみてはどうでしょうか。