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

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

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

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

Python

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

Q&A

2回答

2618閲覧

輪郭抽出による座標の求め方

wadajimon

総合スコア13

OpenCV

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

Python

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

0グッド

0クリップ

投稿2019/05/27 07:39

編集2022/01/12 10:55

Python

import cv2 import numpy as np from IPython.display import display, Image def display_cv_image(image, format='.png'): decoded_bytes = cv2.imencode(format, image)[1].tobytes() display(Image(data=decoded_bytes)) img = cv2.imread("sensei.jpg") display_cv_image(img) # グレイスケール化 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 二値化 ret,th1 = cv2.threshold(gray,130,255,cv2.THRESH_BINARY) display_cv_image(th1) # 輪郭抽出 image, contours, hierarchy = cv2.findContours(th1, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # 面積の大きいもののみ選別 areas = [] for cnt in contours: area = cv2.contourArea(cnt) if area > 10000: epsilon = 0.1*cv2.arcLength(cnt,True) approx = cv2.approxPolyDP(cnt,epsilon,True) areas.append(approx) cv2.drawContours(img,areas,-1,(0,255,0),3) display_cv_image(img) #射影変換 img = cv2.imread("sensei.jpg") dst = [] pts1 = np.float32(areas[0]) pts2 = np.float32([[600,300],[600,0],[0,0],[0,300]]) M = cv2.getPerspectiveTransform(pts1,pts2) dst = cv2.warpPerspective(img,M,(600,300)) display_cv_image(dst) ```![イメージ説明](5495ba5c3ede0debabfe4fdd26a08431.jpeg) このようなカードを斜め上から写真を撮り、その端、4点の座標抽出を行いたいです。 いままでは輪郭の抽出を行い、そこから端4点の座標を抽出出来るのではないかと進めてきましたが、画像処理初心者なのでそのようなプログラムを作ることができませんでした。

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

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

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

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

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

Ryupe

2019/05/27 08:11

輪郭線の交点とは? 2線が交わる点のことを交点といいますが、何と何の線のことでしょうか?
pepperleaf

2019/05/27 14:43

輪郭線抽出では、輪郭線の座標リストが得られると思いますが、その座標リストから、線分データを作成し、交点を得れば、良いのでは? 複雑な図形だと、結構な計算量になりそうですが、まずやってみては? .... と思ったが、よく考えると、輪郭線なので、交点があるのか? 座標リストの始点終点以外が交点?
horiegom

2019/05/31 01:11

そもそも全ての輪郭線を抽出できるのであれば、交点は必要なのですか?
guest

回答2

0

wadajimonさんがやりたがっていることは結構ネットに情報が転がっています。
まずは下のリンクをさらーっと読んでみてください。

読むだけだとよく分からない時は実際に動かしてみると良いです。
プログラムが書けてきて分からないところがあったらまた質問してください。

OpenCVを使って画像の射影変換をしてみる
OpenCV-Pythonチュートリアル

投稿2019/05/30 08:39

Ryupe

総合スコア426

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

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

wadajimon

2019/06/13 07:04

紹介してくれた上のプログラムを使ってみましたが、下記のようなエラーがでました。 エラーの意味がわからずどの部分を改善したらよいか分かりません。 教えていただけませんか。 error: D:\Build\OpenCV\opencv-3.4.0\modules\imgproc\src\imgwarp.cpp:3232: error: (-215) src.checkVector(2, 5) == 4 && dst.checkVector(2, 5) == 4 in function cv::getPerspectiveTransform
Ryupe

2019/06/13 07:25

ソースコードの掲示が無いのでエラー文だけ載せられも分かるわけ無いじゃないですか!!?? 質問文は編集できるので、そこにソースコードを載せるか、新たに質問を作成してください。
wadajimon

2019/06/20 06:05

ソースコードを掲示しました。 どの部分を改善していいか分からないので教えてください。
guest

0

この辺の記事を参考にしてみてはいかがでしょうか。

【python】線分ABと線分CDの交点(2つの直線の交点)を計算する

投稿2019/05/29 01:41

amahara_waya

総合スコア1029

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問