回答編集履歴
1
サンプルコードを追記
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
|
+
|