質問編集履歴

2

画像の追加

2019/11/25 07:22

投稿

reonald
reonald

score29

test CHANGED
File without changes
test CHANGED
@@ -66,7 +66,9 @@
66
66
 
67
67
  ```
68
68
 
69
- このコードで下のような画像が得られるのですが,
69
+ このコードで元画像から下のような画像が得られるのですが,
70
+
71
+ ![イメージ説明](4fefee8083d68d421fd565b1364e5124.jpeg)
70
72
 
71
73
  ![イメージ説明](6b97370455fa5fe84250d5aa0787111e.png)
72
74
 

1

コード修正しました。

2019/11/25 07:22

投稿

reonald
reonald

score29

test CHANGED
File without changes
test CHANGED
@@ -6,39 +6,39 @@
6
6
 
7
7
  from matplotlib.patches import Polygon
8
8
 
9
+
10
+
11
+ img = cv2.imread("./pu1/1124_2_0.jpg")
12
+
9
- import glob
13
+ gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
14
+
15
+ ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
10
16
 
11
17
 
12
18
 
13
- files = glob.glob("./pu1/*")
19
+ kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
14
20
 
15
- for i, f in enumerate(files):
21
+ binary = cv2.dilate(binary, kernel)
16
22
 
17
- img = cv2.imread(f)
18
-
19
- gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
20
-
21
- ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
23
+ contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
22
24
 
23
25
 
24
26
 
25
- kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
27
+ def draw_contours(ax, img, contours):
26
28
 
27
- binary = cv2.dilate(binary, kernel)
29
+ ax.imshow(img)
28
30
 
29
- contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
31
+ ax.set_axis_off()
30
32
 
31
33
 
32
34
 
33
- def draw_contours(ax, img, contours):
35
+ for i, cnt in enumerate(contours):
34
36
 
35
- ax.imshow(img)
37
+ if cv2.contourArea(cnt) < 1900:
36
38
 
37
- ax.set_axis_off()
39
+ continue
38
40
 
39
-
40
-
41
- for i, cnt in enumerate(contours):
41
+ else :
42
42
 
43
43
  cnt = cnt.squeeze(axis=1)
44
44
 
@@ -48,17 +48,19 @@
48
48
 
49
49
  ax.text(cnt[0][0], cnt[0][1], i, color="orange", size="20")
50
50
 
51
+ print(contours)
51
52
 
52
53
 
53
54
 
54
55
 
55
- fig, ax = plt.subplots(figsize=(8, 8))
56
56
 
57
+ fig, ax = plt.subplots(figsize=(8, 8))
58
+
57
- draw_contours(ax, img, contours)
59
+ draw_contours(ax, img, contours)
58
60
 
59
61
 
60
62
 
61
- plt.savefig('./rinnkaku/_%d.jpg' % i)
63
+ plt.savefig('./rinnkaku/.jpg')
62
64
 
63
65
  コード
64
66
 
@@ -66,13 +68,15 @@
66
68
 
67
69
  このコードで下のような画像が得られるのですが,
68
70
 
69
- ![イメージ説明](0501feb567e8efff7b494be0c5599126.jpeg)
71
+ ![イメージ説明](6b97370455fa5fe84250d5aa0787111e.png)
70
72
 
71
73
 
72
74
 
73
- 1.面積の小さいところ(これら0-7の輪郭)を輪郭抽出したくない。
75
+ 面積の小さな部分の輪郭の座標も抽出してしまます
74
76
 
75
- 2.赤点の座標知りたいです。
77
+ 一番大きな輪郭(ここでいう2ばん)ところだけの座標群を知りたいです。
78
+
79
+
76
80
 
77
81
 
78
82