質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1439閲覧

矩形に直線が含まれたときに物体と認識させたい

uriuri

総合スコア47

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/09/03 06:11

帯状のものを認識するためにその物体の頂点を用いて矩形検出し、さらに直線権出検出し矩形内に直線があるとき帯であるとしたいと考えています。
プログラミング初心者でありまして思ったようなことができません。
flagを用いて矩形検出と直線検出の処理がなされたら"prosess"という出力を出すプログラムをかいたのですが、上で述べたような矩形内に直線があった場合"prosess"としたいです。
今の形ですと処理をしたら検出されなくてもprosessとなってしまいます。

説明が下手で申し訳ないのですが、ご教授いただければ幸いです。

python

1#与えられた画像から 2(以下省略) 3#矩形検出 4def func1(): 5 img, contours, hierarchy = cv2.findContours(th1, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_TC89_L1) 6 if len(contours) > 0: 7 #print("true") 8 #return True 9 #else: 10 #return False 11 for i in range(0, len(contours)): 12 #perimeter = cv2.arcLength(contours[i],True) 13 #if perimeter > 10: 14 cnt = contours[i] 15 M = cv2.moments(cnt) 16 #print(M) 17 area = cv2.contourArea(cnt) 18 print(area) 19 if 500 < area < 5000: 20 # continue 21 22 #rect = contours[i] 23 #x, y, w, h = cv2.boundingRect(rect) 24 #cv2.rectangle(img_src, (x, y), (x + w, y + h), (255, 0, 0), 2) 25 rect = cv2.minAreaRect(contours[i]) 26 box = cv2.boxPoints(rect) 27 #print(box) 28 box = np.int0(box) 29 x1,x2,x3,x4 = np.int0(box) 30 a = np.array(x1) 31 b = np.array(x2) 32 c = np.array(x3) 33 d = np.array(x4) 34 #d = math.sqrt((x4-x1)** 2) 35 A = np.linalg.norm(a-b) 36 B = np.linalg.norm(a-c) 37 C = np.linalg.norm(a-d) 38 39 print("頂点",x1,x2,x3,x4) 40 print("Aの長さ", A) 41 print("Bの長さ",B) 42 print("Cの長さ",C) 43 44 if A < B: 45 min = A 46 else: 47 min = B 48 if C < min: 49 min = C 50 print("最小",min) 51 if 5 < min < 25: 52 im = cv2.drawContours(img_src,[box],0,(0,255,0),2) 53 54 return True 55a = func1() 56print(a) 57 58#直線検出 59def func2(): 60 LSD = cv2.createLineSegmentDetector() 61 62# 63 lines, width, prec, nfa = LSD.detect(edges) 64 print(width) 65#print(lines) 66#print(prec) 67#print(nfa) 68 69#color = cv2.cvtColor(gray,cv2.COLOR_GRAY2BGR) 70 if lines is not None: 71 for i in range(len(lines)): 72 73 for x1,y1,x2,y2 in lines[i] : 74 #if width > 1.2: 75 # continue 76 cv2.line(img_src,(x1,y1),(x2,y2),(0,0,255),2) 77 return True 78b = func2() 79print(b) 80 81 82if func1() and func2() == True: 83 print("prosess") 84else: 85 print("no") 86

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問