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

|
8
10
|
|
11
|
+
# -*- coding: utf-8 -*-
|
12
|
+
import cv2
|
13
|
+
import numpy as np
|
9
14
|
|
15
|
+
img = cv2.imread("original.png")
|
16
|
+
cv2.imshow("ORIGINAL",img)
|
17
|
+
|
18
|
+
# 色を分割
|
19
|
+
b,g,r = cv2.split(img)
|
20
|
+
|
21
|
+
# 以下、マスク処理
|
22
|
+
####################
|
23
|
+
# マスク処理の実体
|
24
|
+
mask =( b > 200) & (g < 200)
|
25
|
+
# マスクに従って塗りつぶし
|
26
|
+
img_masked = cv2.bitwise_and(img,img,mask=mask.astype(np.uint8))
|
27
|
+
|
28
|
+
# 軸の入れ替えを追加する場合
|
29
|
+
####################
|
30
|
+
# B --> R
|
31
|
+
b,g,r = cv2.split(img_masked)
|
32
|
+
img_masked_change = cv2.merge((r,g,b))
|
33
|
+
####################
|
34
|
+
|
35
|
+
# 表示関係
|
36
|
+
cv2.imshow("MASKED",img_masked )
|
37
|
+
cv2.imshow("MASKED-CHANGE", img_masked_change)
|
38
|
+
cv2.imwrite("masked.png",img_masked)
|
39
|
+
cv2.imwrite("masked_change.png", img_masked_change)
|
40
|
+
|
41
|
+
cv2.waitKey(0)
|
42
|
+
```
|
43
|
+
|
44
|
+
---
|
45
|
+
|
46
|
+
BGRの入れ替えだけでしたらこんな感じで
|
47
|
+
|**Before**|**After**|
|
48
|
+
|:--:|:--:|
|
49
|
+
|||
|
50
|
+
|
10
51
|
```Python
|
11
52
|
# -*- coding: utf-8 -*-
|
12
53
|
import cv2
|
@@ -23,7 +64,4 @@
|
|
23
64
|
|
24
65
|
cv2.imshow("TEST",img)
|
25
66
|
cv2.waitKey(0)
|
26
|
-
```
|
67
|
+
```
|
27
|
-
---
|
28
|
-
|
29
|
-
numpyで`transpose`をやろうとしましたが、そのまま`img`に対して行うと(512,3,512)のようなshapeになってうまくいきません。結局チャンネルを抽出して並べ替えてーとなると、OpenCVでやった方が早そうですね。
|
1
例を表示
answer
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
こんな感じでしょうか?
|
2
|
+
|
3
|
+
**Before**
|
4
|
+

|
5
|
+
|
6
|
+
**After**
|
7
|
+

|
8
|
+
|
9
|
+
|
1
10
|
```Python
|
2
11
|
# -*- coding: utf-8 -*-
|
3
12
|
import cv2
|
@@ -14,4 +23,7 @@
|
|
14
23
|
|
15
24
|
cv2.imshow("TEST",img)
|
16
25
|
cv2.waitKey(0)
|
17
|
-
```
|
26
|
+
```
|
27
|
+
---
|
28
|
+
|
29
|
+
numpyで`transpose`をやろうとしましたが、そのまま`img`に対して行うと(512,3,512)のようなshapeになってうまくいきません。結局チャンネルを抽出して並べ替えてーとなると、OpenCVでやった方が早そうですね。
|