質問するログイン新規登録

回答編集履歴

2

閾値実装

2017/11/13 22:33

投稿

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

例を表示

2017/11/13 22:33

投稿

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