質問編集履歴

1

コードの追加など

2019/11/22 06:50

投稿

reonald
reonald

スコア32

test CHANGED
File without changes
test CHANGED
@@ -7,3 +7,81 @@
7
7
  楕円フーリエ記述子などを使うのかなとかも思ったりしているのですが,
8
8
 
9
9
  pythonでプログラムが作れたら嬉しいのですが,,,
10
+
11
+
12
+
13
+ ```
14
+
15
+ files = glob.glob("./pu1/*")
16
+
17
+ for i, f in enumerate(files):
18
+
19
+ img = cv2.imread(f)
20
+
21
+ gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
22
+
23
+ ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
24
+
25
+
26
+
27
+ kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
28
+
29
+ binary = cv2.dilate(binary, kernel)
30
+
31
+ contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
32
+
33
+
34
+
35
+
36
+
37
+ def draw_contours(ax, img, contours):
38
+
39
+ ax.imshow(img)
40
+
41
+ ax.set_axis_off()
42
+
43
+
44
+
45
+ for i, cnt in enumerate(contours):
46
+
47
+ cnt = cnt.squeeze(axis=1)
48
+
49
+ ax.add_patch(Polygon(cnt, color="b", fill=None, lw=2))
50
+
51
+ ax.plot(cnt[:, 0], cnt[:, 1], "ro", mew=0, ms=4)
52
+
53
+ ax.text(cnt[0][0], cnt[0][1], i, color="orange", size="20")
54
+
55
+
56
+
57
+
58
+
59
+ fig, ax = plt.subplots(figsize=(8, 8))
60
+
61
+ draw_contours(ax, img, contours)
62
+
63
+
64
+
65
+ plt.savefig('./rinnkaku/_%d.jpg' % i)
66
+
67
+ コード
68
+
69
+ ```
70
+
71
+
72
+
73
+ 輪郭をとるところまではできています。
74
+
75
+ ![イメージ説明](e212eb41208a66eb24aa858f8ca59616.jpeg)
76
+
77
+ ![イメージ説明](cd39a84f1dc96620009ab3ad23a09dff.jpeg)
78
+
79
+
80
+
81
+ その後のxy平面への投影ができないです。
82
+
83
+ 原点や輪郭の開始点は任せます。
84
+
85
+ 楕円フーリエ記述子を使ったイメージは下図です。
86
+
87
+ ![イメージ説明](5b0f35389b07da7df6e2cf1dd668a970.png)