回答編集履歴

1

抽出に使用したコードを追記

2018/07/06 11:39

投稿

shiron46
shiron46

スコア111

test CHANGED
@@ -21,3 +21,71 @@
21
21
  多少のJPEGノイズはありますが、ほぼ問題なく抽出できています。
22
22
 
23
23
  ![イメージ説明](25666531278d47ffb7cb3f39e86b1b39.jpeg)
24
+
25
+
26
+
27
+ ---
28
+
29
+ ### 使用したコード
30
+
31
+ ```Python
32
+
33
+ import cv2
34
+
35
+ import numpy as np
36
+
37
+
38
+
39
+
40
+
41
+ def extract_by_colors(img_in, r, g, b, margin):
42
+
43
+ # 取得する色の範囲を指定
44
+
45
+ lower_r = max(r - margin, 0)
46
+
47
+ upper_r = min(r + margin, 255)
48
+
49
+ lower_g = max(g - margin, 0)
50
+
51
+ upper_g = min(g + margin, 255)
52
+
53
+ lower_b = max(b - margin, 0)
54
+
55
+ upper_b = min(b + margin, 255)
56
+
57
+ lower = np.array([lower_b, lower_g, lower_r])
58
+
59
+ upper = np.array([upper_b, upper_g, upper_r])
60
+
61
+
62
+
63
+ # 指定した色に基づいてマスク画像を作成し、元画像をマスク
64
+
65
+ img_out = cv2.bitwise_and(img_in, img_in, mask=cv2.inRange(img_in, lower, upper))
66
+
67
+
68
+
69
+ # 2値化
70
+
71
+ img_gray = cv2.cvtColor(img_out, cv2.COLOR_RGB2GRAY)
72
+
73
+ dummy, img_out = cv2.threshold(img_gray, 50, 255, cv2.THRESH_BINARY_INV)
74
+
75
+
76
+
77
+ return img_out
78
+
79
+
80
+
81
+
82
+
83
+ if __name__ == "__main__":
84
+
85
+ img_in = cv2.imread("input.jpg")
86
+
87
+ img_out = extract_by_colors(img_in, 0, 128, 255, 127)
88
+
89
+ cv2.imwrite("output.jpg", img_out)
90
+
91
+ ```