回答編集履歴
2
閾値実装
test
CHANGED
@@ -1,18 +1,100 @@
|
|
1
|
+
皆様の回答を見るまでただただ軸を入れ替えると思っていました。
|
2
|
+
|
1
|
-
こんな感じで
|
3
|
+
OpenCVではこんな感じです。
|
4
|
+
|
5
|
+
OpenCVの閾値関係のチュートリアルは[こちら](http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_imgproc/py_thresholding/py_thresholding.html)にあります。
|
2
6
|
|
3
7
|
|
4
8
|
|
5
|
-
**
|
9
|
+
|**生**|**閾値処理のみ**|**閾値処理+軸の入れ替え**|
|
6
10
|
|
11
|
+
|:--:|:--:|:--:|
|
12
|
+
|
7
|
-
|||
|
8
14
|
|
9
15
|
|
10
16
|
|
11
|
-
|
17
|
+
```Python
|
12
|
-
|
13
|
-

|
14
18
|
|
15
19
|
|
20
|
+
|
21
|
+
# -*- coding: utf-8 -*-
|
22
|
+
|
23
|
+
import cv2
|
24
|
+
|
25
|
+
import numpy as np
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
img = cv2.imread("original.png")
|
30
|
+
|
31
|
+
cv2.imshow("ORIGINAL",img)
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
# 色を分割
|
36
|
+
|
37
|
+
b,g,r = cv2.split(img)
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
# 以下、マスク処理
|
42
|
+
|
43
|
+
####################
|
44
|
+
|
45
|
+
# マスク処理の実体
|
46
|
+
|
47
|
+
mask =( b > 200) & (g < 200)
|
48
|
+
|
49
|
+
# マスクに従って塗りつぶし
|
50
|
+
|
51
|
+
img_masked = cv2.bitwise_and(img,img,mask=mask.astype(np.uint8))
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
# 軸の入れ替えを追加する場合
|
56
|
+
|
57
|
+
####################
|
58
|
+
|
59
|
+
# B --> R
|
60
|
+
|
61
|
+
b,g,r = cv2.split(img_masked)
|
62
|
+
|
63
|
+
img_masked_change = cv2.merge((r,g,b))
|
64
|
+
|
65
|
+
####################
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
# 表示関係
|
70
|
+
|
71
|
+
cv2.imshow("MASKED",img_masked )
|
72
|
+
|
73
|
+
cv2.imshow("MASKED-CHANGE", img_masked_change)
|
74
|
+
|
75
|
+
cv2.imwrite("masked.png",img_masked)
|
76
|
+
|
77
|
+
cv2.imwrite("masked_change.png", img_masked_change)
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
cv2.waitKey(0)
|
82
|
+
|
83
|
+
```
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
---
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
BGRの入れ替えだけでしたらこんな感じで
|
92
|
+
|
93
|
+
|**Before**|**After**|
|
94
|
+
|
95
|
+
|:--:|:--:|
|
96
|
+
|
97
|
+
|||
|
16
98
|
|
17
99
|
|
18
100
|
|
@@ -49,9 +131,3 @@
|
|
49
131
|
cv2.waitKey(0)
|
50
132
|
|
51
133
|
```
|
52
|
-
|
53
|
-
---
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
numpyで`transpose`をやろうとしましたが、そのまま`img`に対して行うと(512,3,512)のようなshapeになってうまくいきません。結局チャンネルを抽出して並べ替えてーとなると、OpenCVでやった方が早そうですね。
|
1
例を表示
test
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
こんな感じでしょうか?
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
**Before**
|
6
|
+
|
7
|
+

|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
**After**
|
12
|
+
|
13
|
+

|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
|
1
19
|
```Python
|
2
20
|
|
3
21
|
# -*- coding: utf-8 -*-
|
@@ -31,3 +49,9 @@
|
|
31
49
|
cv2.waitKey(0)
|
32
50
|
|
33
51
|
```
|
52
|
+
|
53
|
+
---
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
numpyで`transpose`をやろうとしましたが、そのまま`img`に対して行うと(512,3,512)のようなshapeになってうまくいきません。結局チャンネルを抽出して並べ替えてーとなると、OpenCVでやった方が早そうですね。
|