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

質問編集履歴

2

コード

2018/08/06 05:27

投稿

uriuri
uriuri

スコア47

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,3 @@
1
- opencvを用いて白線を検出しようと考えています。
2
1
  `![イメージ説明](aec91c94103dd96367ca2e21f8d357d7.jpeg)説明](de0d9317b0c0fe2607db0ac7a0df9b87.jpeg)on
3
2
 
4
3
 

1

コード

2018/08/06 05:27

投稿

uriuri
uriuri

スコア47

title CHANGED
File without changes
body CHANGED
@@ -2,56 +2,8 @@
2
2
  `![イメージ説明](aec91c94103dd96367ca2e21f8d357d7.jpeg)説明](de0d9317b0c0fe2607db0ac7a0df9b87.jpeg)on
3
3
 
4
4
 
5
- ```python
6
5
 
7
- #coding: Shift_Jis
8
- import cv2
9
- import math
10
- import numpy as np
11
6
 
12
- img_src = cv2.imread("./〇〇/image_name")
13
- # 入力画像をグレースケール変換
14
- gray = cv2.cvtColor(img_src,cv2.COLOR_BGR2GRAY)
15
-
16
- #適応的しきい値処理
17
- th1 = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\
18
- cv2.THRESH_BINARY,11,2)
19
-
20
- #ガウシアンフィルタ処理
21
- gauss = cv2.GaussianBlur(th1,(9,9),0)
22
-
23
- #キャニーエッジ検出
24
- edges = cv2.Canny(gauss,100,150)
25
-
26
- #LSD生成
27
- LSD = cv2.createLineSegmentDetector()
28
-
29
- #線分検出
30
- lines, width, prec, nfa = LSD.detect(edges)
31
-
32
- # グレースケール変換をBGR変換
33
- color = cv2.cvtColor(gray,cv2.COLOR_GRAY2BGR)
34
-
35
- # 直線の描画
36
- for i in range(len(lines)):
37
- for x1,y1,x2,y2 in lines[i] :
38
- cv2.line(color,(x1,y1),(x2,y2),(0,0,255),2)
39
-
40
- #OpenCVがBGRなのでRGBに変換
41
- disp_in_img = cv2.cvtColor(color, cv2.COLOR_BGR2RGB)
42
-
43
-
44
-
45
- cv2.imshow('src', img_src)
46
- cv2.imshow("nitika", th1)
47
- cv2.imshow('dst', disp_in_img)
48
-
49
-
50
- cv2.waitKey()
51
- cv2.destroyAllWindows()
52
-
53
- ```
54
-
55
7
  結果がこうなりました。
56
8
  ![イメージ説明](8926ea7b9d9fc52e2c1e3e504a8b2f56.jpeg)
57
9
  光の指す部分や地面を線分検出してしまったのですが、これらを取り除きたいと思っています。