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

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

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

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

Python

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

Q&A

1回答

3721閲覧

輪郭の座標をcontoursからx,yに分けて変数として出力したい

sincere

総合スコア3

OpenCV

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

Python

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

0グッド

0クリップ

投稿2022/05/16 07:43

2値化画像から輪郭を出すことができ,輪郭の座標も出せたのですが,輪郭の座標の値を使って重心からの距離を計算したいので輪郭の座標をx,yに分けて変数にしたいですが,方法がわかりません.この方法自体が良くないのであればそれも含めて教えてほしいです.
仕様バージョンはpython3.8.8(anaconda3のspyder),opencv4.5.4です
使用した画像はこちらです
イメージ説明

該当のソースコード

import cv2 import numpy as np #HSV上限下限 lower_white = (0,53,93) upper_white = (255,255,240) # 画像読み込み img = cv2.imread("c:/temp/asp.jpg") # HSV化 img1 = cv2.cvtColor(img, cv2.COLOR_BGR2HSV_FULL) #2値化 thresh = cv2.inRange(img1, lower_white, upper_white) # 輪郭を抽出する contours, hierarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) # 読み込んだ画像に輪郭を描画 img_contours = cv2.drawContours(img, contours, -1, (255, 0 ,0), 1) cv2.imshow("img", img_contours) cv2.imshow('th',thresh) print(contours) cv2.waitKey(0) # ウィンドウを破棄 cv2.destroyAllWindows()

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

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

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

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

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

jbpb0

2022/05/16 14:30

https://hk29.hatenablog.jp/entry/2020/02/01/162533 に記載のpythonコードの「輪郭抽出の手法A」の「輪郭抽出」で、「x_list」と「y_list」にそれぞれ「x座標」と「y座標」が格納されるので、参考にしてみてください
sincere

2022/05/18 05:57

ありがとうございます.参考で見ていたのですが「輪郭抽出」のなかで2か所わからなかったので聞いてもよろしいでしょうか ・cv2.contourArea(contours[i]) < 500:について →自分の認識では輪郭内の面積を求める関数なのですがなぜ必要なのかがよくわかりません ・if i%2==0: →どのような条件でなぜ必要なのかという意味でわかりません
jbpb0

2022/05/18 07:09

> ・cv2.contourArea(contours[i]) < 500:について →自分の認識では輪郭内の面積を求める関数なのですがなぜ必要なのかがよくわかりません https://hk29.hatenablog.jp/entry/2020/02/01/162533 の上の方にあるチューリップの画像のあたりを見てください 「処理4. マスクの作成」では白いけど、「処理5. オリジナル画像を元に、チューリップ花の輪郭を描画する」では輪郭が付いてない場所がありますよね 画像の上の辺の右の方とか そのような、すごく小さな部分を無視したいためだと思います 質問者さんの目的で、そういうことをする必要が無いなら、その処理は無視すればいいです
jbpb0

2022/05/18 07:40 編集

> ・if i%2==0: →どのような条件でなぜ必要なのかという意味でわかりません https://hk29.hatenablog.jp/entry/2020/02/01/162533 の「輪郭抽出の手法A」の「輪郭抽出」の「#print(buf_np)」の「#」を削除して、その行を有効にしてから実行したら、「buf_np」が表示されますので、まずそれを見てください 「for i, elem in enumerate(buf_np):」以降で、「buf_np」をx座標とy座標に分離してるのですが、上記で表示された「buf_np」と、「for i, elem in enumerate(buf_np):」以降のコードを参照しながら、一旦自分で考えてみてください なお、もし「i%2」の「%」の意味が分からないのなら、下記を見てください https://www.curict.com/item/b1/b146ef1.html
sincere

2022/05/18 08:57

わかりやすく説明いただきありがとうございます.これで一度やってみようと思います.
guest

回答1

0

Python 輪郭の検出とその座標の抽出「OpenCV」
に記載のpythonコードの「輪郭抽出の手法A」の「輪郭抽出」で、「x_list」と「y_list」にそれぞれ「x座標」と「y座標」が格納されるので、参考にしてみてください

投稿2022/07/29 09:20

jbpb0

総合スコア7651

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問