回答編集履歴

1

サンプルコードを追記

2017/07/09 06:03

投稿

can110
can110

スコア38266

test CHANGED
@@ -1,3 +1,45 @@
1
1
  `cv2.inRange`で指定範囲の色のみのマスク画像を生成し、`cv2.bitwise_and`で元画像とマスク画像を合成する手順はいかがでしょうか?
2
2
 
3
3
  参考:[Python3 OpenCV3で指定した色のみを抽出して表示する](https://www.blog.umentu.work/python3-opencv3%E3%81%A7%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E8%89%B2%E3%81%AE%E3%81%BF%E3%82%92%E6%8A%BD%E5%87%BA%E3%81%97%E3%81%A6%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%80%90%E5%8B%95%E7%94%BB/)
4
+
5
+
6
+
7
+ 画素(配列要素)自体を削除すると画像として成り立たなくなるため、「ほぼ白」の領域を黒にする例です。
8
+
9
+ ```python
10
+
11
+ import cv2
12
+
13
+ img = cv2.imread('lena.png', cv2.IMREAD_COLOR)
14
+
15
+
16
+
17
+ # 「ほぼ白」の色範囲
18
+
19
+ lower = np.array([192,192,192])
20
+
21
+ upper = np.array([255,255,255])
22
+
23
+ #マスク作成
24
+
25
+ img_mask = cv2.inRange(img, lower, upper) # 「ほぼ白」のみの抽出マスク
26
+
27
+ img_mask = cv2.bitwise_not(img_mask,img_mask) # 反転=「ほぼ白」以外の抽出マスク
28
+
29
+ # 「ほぼ白」以外を抽出→「ほぼ白」を黒に
30
+
31
+ img = cv2.bitwise_and(img, img, mask=img_mask)
32
+
33
+
34
+
35
+ cv2.imshow('img', img)
36
+
37
+ cv2.waitKey(0)
38
+
39
+ cv2.destroyAllWindows()
40
+
41
+ ```
42
+
43
+ ![イメージ説明](8d0edf538e7e917aefb35d8fddd88991.png)
44
+
45
+