回答編集履歴

2

閾値実装

2017/11/13 22:33

投稿

退会済みユーザー
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
- **Before**
9
+ |****|**閾値処理のみ**|**閾値処理+軸の入れ替え**|
6
10
 
11
+ |:--:|:--:|:--:|
12
+
7
- ![Before](42c88cf07983e1b633b4af3a1e3feb24.png)
13
+ |![イメージ説明](78eb9efaf46671312db33ad4ec725de2.png)|![イメージ説明](ae401a3b91451c74f55b0ea6ef7bea74.png)|![イメージ説明](f01a37f10edddea2356563a0dcba59ae.png)|
8
14
 
9
15
 
10
16
 
11
- **After**
17
+ ```Python
12
-
13
- ![After](837af6d21f7d03330ba6bcf59967122a.png)
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
+ |![イメージ説明](aa1bd3c28c3b32b1470a7126eb4aa709.png)|![イメージ説明](6b0144eaf8a94630ee433758620a365f.png)|
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

例を表示

2017/11/13 22:33

投稿

退会済みユーザー
test CHANGED
@@ -1,3 +1,21 @@
1
+ こんな感じでしょうか?
2
+
3
+
4
+
5
+ **Before**
6
+
7
+ ![Before](42c88cf07983e1b633b4af3a1e3feb24.png)
8
+
9
+
10
+
11
+ **After**
12
+
13
+ ![After](837af6d21f7d03330ba6bcf59967122a.png)
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でやった方が早そうですね。