teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

誤字

2018/08/06 05:43

投稿

uriuri
uriuri

スコア47

title CHANGED
File without changes
body CHANGED
@@ -34,133 +34,4 @@
34
34
  continue
35
35
 
36
36
  のようにすることで大きな矩形や小さな矩形を取り除くことはできますか。
37
- ほかにいい方法があればアドバイスお願いします。
37
+ ほかにいい方法があればアドバイスお願いします。
38
-
39
-
40
- 実際に使ったプログラムを載せます。いろんなサイトを参考にして書いたのでぐちゃぐちゃかもしれませんがよろしくおねがいします。
41
- ```ここに言語を入力
42
- #coding: Shift_Jis
43
- import cv2
44
- import math
45
- import numpy as np
46
-
47
- # cv2.cv.CV_FOURCC
48
- def cv_fourcc(c1, c2, c3, c4):
49
- return (ord(c1) & 255) + ((ord(c2) & 255) << 8) + \
50
- ((ord(c3) & 255) << 16) + ((ord(c4) & 255) << 24)
51
-
52
-
53
- if __name__ == '__main__':
54
- #
55
- ESC_KEY = 27 #
56
- INTERVAL= 33 # 33
57
- FRAME_RATE = 30 # fps
58
-
59
- ORG_WINDOW_NAME = "org"
60
- GAUSSIAN_WINDOW_NAME = "syori"
61
-
62
- FILE_NAME = "1.avi"
63
- FILE_NAME2 = "2.avi"
64
- FILE_NAME3 = "3.avi"
65
- FILE_NAME4 = "4.avi"
66
- #FILE_NAME5 = "5.avi"
67
-
68
- DEVICE_ID = 1
69
- cap = cv2.VideoCapture(DEVICE_ID)
70
-
71
- end_flag, c_frame = cap.read()
72
- height, width, channels = c_frame.shape
73
- image_size = height * width
74
- rec = cv2.VideoWriter(FILE_NAME, \
75
- cv_fourcc('X', 'V', 'I', 'D'), \
76
- FRAME_RATE, \
77
- (width, height), \
78
- True)
79
- rec2 = cv2.VideoWriter(FILE_NAME2, \
80
- cv_fourcc('X', 'V', 'I', 'D'), \
81
- FRAME_RATE, \
82
- (width, height), \
83
- True)
84
- rec3 = cv2.VideoWriter(FILE_NAME3, \
85
- cv_fourcc('X', 'V', 'I', 'D'), \
86
- FRAME_RATE, \
87
- (width, height), \
88
- True)
89
- rec4 = cv2.VideoWriter(FILE_NAME4, \
90
- cv_fourcc('X', 'V', 'I', 'D'), \
91
- FRAME_RATE, \
92
- (width, height), \
93
- True)
94
- #rec5 = cv2.VideoWriter(FILE_NAME5, \
95
- #cv_fourcc('X', 'V', 'I', 'D'), \
96
- ##FRAME_RATE, \
97
- #(width, height), \
98
- #True)
99
-
100
- cv2.namedWindow(ORG_WINDOW_NAME)
101
- cv2.namedWindow(GAUSSIAN_WINDOW_NAME)
102
-
103
- while end_flag == True:
104
-
105
- gray = cv2.cvtColor(c_frame,cv2.COLOR_BGR2GRAY)
106
- ret,th1 = cv2.threshold(gray,200,255,cv2.THRESH_BINARY)
107
-
108
- gauss = cv2.GaussianBlur(th1,(9,9),0)
109
-
110
- edges = cv2.Canny(gauss,100,150)
111
-
112
- img, contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_TC89_L1)
113
- for i in range(0, len(contours)):
114
- area = cv2.contourArea(contours[i])
115
-
116
- if area < 1e2 or 1e5 < area: #1e2,1e5
117
- continue
118
-
119
- if len(contours[i]) > 0:
120
- rect = contours[i]
121
- x, y, w, h = cv2.boundingRect(rect)
122
- if w >= 50 and w <= 1000: #300,450
123
- if h >= 0 and h <= 500: #0,70
124
-
125
- cv2.rectangle(c_frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
126
-
127
- LSD = cv2.createLineSegmentDetector()
128
-
129
- lines, width, prec, nfa = LSD.detect(edges)
130
-
131
- color = cv2.cvtColor(gray,cv2.COLOR_GRAY2BGR)
132
-
133
- for i in range(len(lines)):
134
- for x1,y1,x2,y2 in lines[i] :
135
- cv2.line(c_frame,(x1,y1),(x2,y2),(0,0,255),2)
136
-
137
- disp_in_img = cv2.cvtColor(color, cv2.COLOR_BGR2RGB)
138
-
139
- cv2.imshow(ORG_WINDOW_NAME, c_frame)
140
- #cv2.imshow('res',gauss)
141
- cv2.imshow('4', disp_in_img)
142
- cv2.imshow('3', gray)
143
- cv2.imshow("1", th1)
144
- cv2.imshow("2", edges)
145
-
146
- rec.write(gray)
147
- rec2.write(c_frame)
148
- rec3.write(th1)
149
- rec4.write(edges)
150
- #rec5.write(gauss)
151
-
152
-
153
- key = cv2.waitKey(INTERVAL)
154
- if key == ESC_KEY:
155
- break
156
-
157
-
158
- end_flag, c_frame = cap.read()
159
-
160
- #
161
- cv2.destroyAllWindows()
162
- cap.release()
163
- rec.release()
164
-
165
-
166
- ```

1

プログラム添付

2018/08/06 05:43

投稿

uriuri
uriuri

スコア47

title CHANGED
File without changes
body CHANGED
@@ -34,4 +34,133 @@
34
34
  continue
35
35
 
36
36
  のようにすることで大きな矩形や小さな矩形を取り除くことはできますか。
37
- ほかにいい方法があればアドバイスお願いします。
37
+ ほかにいい方法があればアドバイスお願いします。
38
+
39
+
40
+ 実際に使ったプログラムを載せます。いろんなサイトを参考にして書いたのでぐちゃぐちゃかもしれませんがよろしくおねがいします。
41
+ ```ここに言語を入力
42
+ #coding: Shift_Jis
43
+ import cv2
44
+ import math
45
+ import numpy as np
46
+
47
+ # cv2.cv.CV_FOURCC
48
+ def cv_fourcc(c1, c2, c3, c4):
49
+ return (ord(c1) & 255) + ((ord(c2) & 255) << 8) + \
50
+ ((ord(c3) & 255) << 16) + ((ord(c4) & 255) << 24)
51
+
52
+
53
+ if __name__ == '__main__':
54
+ #
55
+ ESC_KEY = 27 #
56
+ INTERVAL= 33 # 33
57
+ FRAME_RATE = 30 # fps
58
+
59
+ ORG_WINDOW_NAME = "org"
60
+ GAUSSIAN_WINDOW_NAME = "syori"
61
+
62
+ FILE_NAME = "1.avi"
63
+ FILE_NAME2 = "2.avi"
64
+ FILE_NAME3 = "3.avi"
65
+ FILE_NAME4 = "4.avi"
66
+ #FILE_NAME5 = "5.avi"
67
+
68
+ DEVICE_ID = 1
69
+ cap = cv2.VideoCapture(DEVICE_ID)
70
+
71
+ end_flag, c_frame = cap.read()
72
+ height, width, channels = c_frame.shape
73
+ image_size = height * width
74
+ rec = cv2.VideoWriter(FILE_NAME, \
75
+ cv_fourcc('X', 'V', 'I', 'D'), \
76
+ FRAME_RATE, \
77
+ (width, height), \
78
+ True)
79
+ rec2 = cv2.VideoWriter(FILE_NAME2, \
80
+ cv_fourcc('X', 'V', 'I', 'D'), \
81
+ FRAME_RATE, \
82
+ (width, height), \
83
+ True)
84
+ rec3 = cv2.VideoWriter(FILE_NAME3, \
85
+ cv_fourcc('X', 'V', 'I', 'D'), \
86
+ FRAME_RATE, \
87
+ (width, height), \
88
+ True)
89
+ rec4 = cv2.VideoWriter(FILE_NAME4, \
90
+ cv_fourcc('X', 'V', 'I', 'D'), \
91
+ FRAME_RATE, \
92
+ (width, height), \
93
+ True)
94
+ #rec5 = cv2.VideoWriter(FILE_NAME5, \
95
+ #cv_fourcc('X', 'V', 'I', 'D'), \
96
+ ##FRAME_RATE, \
97
+ #(width, height), \
98
+ #True)
99
+
100
+ cv2.namedWindow(ORG_WINDOW_NAME)
101
+ cv2.namedWindow(GAUSSIAN_WINDOW_NAME)
102
+
103
+ while end_flag == True:
104
+
105
+ gray = cv2.cvtColor(c_frame,cv2.COLOR_BGR2GRAY)
106
+ ret,th1 = cv2.threshold(gray,200,255,cv2.THRESH_BINARY)
107
+
108
+ gauss = cv2.GaussianBlur(th1,(9,9),0)
109
+
110
+ edges = cv2.Canny(gauss,100,150)
111
+
112
+ img, contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_TC89_L1)
113
+ for i in range(0, len(contours)):
114
+ area = cv2.contourArea(contours[i])
115
+
116
+ if area < 1e2 or 1e5 < area: #1e2,1e5
117
+ continue
118
+
119
+ if len(contours[i]) > 0:
120
+ rect = contours[i]
121
+ x, y, w, h = cv2.boundingRect(rect)
122
+ if w >= 50 and w <= 1000: #300,450
123
+ if h >= 0 and h <= 500: #0,70
124
+
125
+ cv2.rectangle(c_frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
126
+
127
+ LSD = cv2.createLineSegmentDetector()
128
+
129
+ lines, width, prec, nfa = LSD.detect(edges)
130
+
131
+ color = cv2.cvtColor(gray,cv2.COLOR_GRAY2BGR)
132
+
133
+ for i in range(len(lines)):
134
+ for x1,y1,x2,y2 in lines[i] :
135
+ cv2.line(c_frame,(x1,y1),(x2,y2),(0,0,255),2)
136
+
137
+ disp_in_img = cv2.cvtColor(color, cv2.COLOR_BGR2RGB)
138
+
139
+ cv2.imshow(ORG_WINDOW_NAME, c_frame)
140
+ #cv2.imshow('res',gauss)
141
+ cv2.imshow('4', disp_in_img)
142
+ cv2.imshow('3', gray)
143
+ cv2.imshow("1", th1)
144
+ cv2.imshow("2", edges)
145
+
146
+ rec.write(gray)
147
+ rec2.write(c_frame)
148
+ rec3.write(th1)
149
+ rec4.write(edges)
150
+ #rec5.write(gauss)
151
+
152
+
153
+ key = cv2.waitKey(INTERVAL)
154
+ if key == ESC_KEY:
155
+ break
156
+
157
+
158
+ end_flag, c_frame = cap.read()
159
+
160
+ #
161
+ cv2.destroyAllWindows()
162
+ cap.release()
163
+ rec.release()
164
+
165
+
166
+ ```