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

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

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

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

Python

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

Q&A

0回答

1997閲覧

pythonでopencv値の抽出の方法

face_one

総合スコア4

OpenCV

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

Python

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

0グッド

0クリップ

投稿2020/02/10 09:09

pythonソフトでカメラに映った対象物のラベリングと重心位置(x,y)の表記を行いました。
ID2(最初のラベル)のXとYの値を取り出して次の工程で使いたいのですが、その取り出し方
がわかりません。どなたか御教授してください。お願い致します。

import numpy as np
import cv2

cap = cv2.VideoCapture(1)

while(True):

# Capture frame-by-frame ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) ksize = 21 gray_src = cv2.medianBlur(gray,ksize)

dst=cv2.adaptiveThreshold(gray_src,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,5)
# ラベリング結果書き出し用に二値画像をカラー変換
color_src01 = cv2.cvtColor(gray_src, cv2.COLOR_GRAY2BGR)
color_src02 = cv2.cvtColor(gray_src, cv2.COLOR_GRAY2BGR)
# ラベリング処理
label = cv2.connectedComponentsWithStats(dst)
# オブジェクト情報を項目別に抽出
n = label[0] - 1
data = np.delete(label[2], 0, 0)
center = np.delete(label[3], 0, 0)

# オブジェクト情報を利用してラベリング結果を画面に表示 for i in range(n): # 各オブジェクトの外接矩形を赤枠で表示 x0 = data[i][0] y0 = data[i][1] x1 = data[i][0] + data[i][2] y1 = data[i][1] + data[i][3] cv2.rectangle(color_src01, (x0, y0), (x1, y1), (0, 0, 255)) cv2.rectangle(color_src02, (x0, y0), (x1, y1), (0, 0, 255)) # 各オブジェクトのラベル番号と面積に黄文字で表示 cv2.putText(color_src01, "ID: " +str(i + 1), (x1 - 20, y1 + 15), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255)) cv2.putText(color_src01, "S: " +str(data[i][4]), (x1 - 20, y1 + 30), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255)) # 各オブジェクトの重心座標をに黄文字で表示  *ここのID2のXとYの値を取り出したい* cv2.putText(color_src02, "X: " + str(int(center[i][0])), (x1 - 30, y1 + 15), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255)) cv2.putText(color_src02, "Y: " + str(int(center[i][1])), (x1 - 30, y1 + 30), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255)) # 結果の表示 cv2.imshow("color_src01", color_src01) cv2.imshow("color_src02", color_src02)

  #表示終わり
if cv2.waitKey(1) & 0xFF == ord('q'):
break

When everything done, release the capture

cap.release()
cv2.destroyAllWindows()

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

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

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

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

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

tiitoi

2020/02/10 16:47

コードはインデントが崩れてしまうので markdown 記法で記述してください
0kcal

2020/02/10 21:32

お疲れ様です。 質問の意味がとりにくい感じがします。 補足すると回答が得られるのでは。 int(center[i][0]) とかでは、ダメなんでしょうか?
face_one

2020/02/11 02:37

早速の御解答有難うございます。 int(center[i][0])で試したところ抽出できました。 まだpythonかじりたてで、簡単なことも分からないなくて・・・ 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問