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()
あなたの回答
tips
プレビュー