質問編集履歴

2

ソースコードを追加しました。

2019/06/20 06:04

投稿

wadajimon
wadajimon

スコア13

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,100 @@
1
+ Python
2
+
3
+ ```
4
+
5
+ import cv2
6
+
7
+ import numpy as np
8
+
9
+
10
+
11
+ from IPython.display import display, Image
12
+
13
+
14
+
15
+ def display_cv_image(image, format='.png'):
16
+
17
+ decoded_bytes = cv2.imencode(format, image)[1].tobytes()
18
+
19
+ display(Image(data=decoded_bytes))
20
+
21
+
22
+
23
+ img = cv2.imread("sensei.jpg")
24
+
25
+ display_cv_image(img)
26
+
27
+ # グレイスケール化
28
+
29
+ gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
30
+
31
+
32
+
33
+ # 二値化
34
+
35
+ ret,th1 = cv2.threshold(gray,130,255,cv2.THRESH_BINARY)
36
+
37
+ display_cv_image(th1)
38
+
39
+
40
+
41
+ # 輪郭抽出
42
+
43
+ image, contours, hierarchy = cv2.findContours(th1, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
44
+
45
+
46
+
47
+ # 面積の大きいもののみ選別
48
+
49
+ areas = []
50
+
51
+ for cnt in contours:
52
+
53
+ area = cv2.contourArea(cnt)
54
+
55
+ if area > 10000:
56
+
57
+ epsilon = 0.1*cv2.arcLength(cnt,True)
58
+
59
+ approx = cv2.approxPolyDP(cnt,epsilon,True)
60
+
61
+ areas.append(approx)
62
+
63
+
64
+
65
+ cv2.drawContours(img,areas,-1,(0,255,0),3)
66
+
67
+ display_cv_image(img)
68
+
69
+
70
+
71
+ #射影変換
72
+
73
+ img = cv2.imread("sensei.jpg")
74
+
75
+
76
+
77
+ dst = []
78
+
79
+
80
+
81
+ pts1 = np.float32(areas[0])
82
+
83
+ pts2 = np.float32([[600,300],[600,0],[0,0],[0,300]])
84
+
85
+
86
+
87
+ M = cv2.getPerspectiveTransform(pts1,pts2)
88
+
89
+ dst = cv2.warpPerspective(img,M,(600,300))
90
+
91
+
92
+
93
+ display_cv_image(dst)
94
+
95
+
96
+
1
- ![イメージ説明](5495ba5c3ede0debabfe4fdd26a08431.jpeg)
97
+ ```![イメージ説明](5495ba5c3ede0debabfe4fdd26a08431.jpeg)
2
98
 
3
99
  このようなカードを斜め上から写真を撮り、その端、4点の座標抽出を行いたいです。
4
100
 

1

画像例を追加し、書き直した。

2019/06/20 06:04

投稿

wadajimon
wadajimon

スコア13

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,5 @@
1
- Pythonで輪郭線抽出の画像処理をしており、輪郭線の交点の座標を求めたいのですが全く検討がつきません。
1
+ ![イメージ説明](5495ba5c3ede0debabfe4fdd26a08431.jpeg)
2
2
 
3
- かいい方法はありませんか
3
+ このようなカードを斜め上ら写真を撮り、その端、4点の座標抽出を行です
4
+
5
+ いままでは輪郭の抽出を行い、そこから端4点の座標を抽出出来るのではないかと進めてきましたが、画像処理初心者なのでそのようなプログラムを作ることができませんでした。