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

回答編集履歴

1

サンプルコードを追記

2017/07/09 06:03

投稿

8524ba23
8524ba23

スコア38350

answer CHANGED
@@ -1,2 +1,22 @@
1
1
  `cv2.inRange`で指定範囲の色のみのマスク画像を生成し、`cv2.bitwise_and`で元画像とマスク画像を合成する手順はいかがでしょうか?
2
- 参考:[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/)
2
+ 参考:[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/)
3
+
4
+ 画素(配列要素)自体を削除すると画像として成り立たなくなるため、「ほぼ白」の領域を黒にする例です。
5
+ ```python
6
+ import cv2
7
+ img = cv2.imread('lena.png', cv2.IMREAD_COLOR)
8
+
9
+ # 「ほぼ白」の色範囲
10
+ lower = np.array([192,192,192])
11
+ upper = np.array([255,255,255])
12
+ #マスク作成
13
+ img_mask = cv2.inRange(img, lower, upper) # 「ほぼ白」のみの抽出マスク
14
+ img_mask = cv2.bitwise_not(img_mask,img_mask) # 反転=「ほぼ白」以外の抽出マスク
15
+ # 「ほぼ白」以外を抽出→「ほぼ白」を黒に
16
+ img = cv2.bitwise_and(img, img, mask=img_mask)
17
+
18
+ cv2.imshow('img', img)
19
+ cv2.waitKey(0)
20
+ cv2.destroyAllWindows()
21
+ ```
22
+ ![イメージ説明](8d0edf538e7e917aefb35d8fddd88991.png)