私はpythonとopencvライブラリで作業しています。ラベル付きの固有の輪郭(または独立した輪郭を描く)
私は、カメラのキャプチャをスレッシュホールドしたり、輪郭(複数)を見つけて描画することができます。 しかし、私は問題があります。私は、一意のIDまたはタグでこれらの輪郭を識別しようとします。 (たとえば:Id:1、Id:2)を使用して追跡します。 私はこの輪郭が永続的なIDを使用する必要があります。
目標は1本の線を描き、1つ以上の輪郭を数え、時には1つ以上の輪郭を大きな輪郭に変換することです。
注:私は深度カメラと私の画像の深さの配列を扱っています。
コードを追加します。
ありがとうございます。
countours = cv2.findContours(mask, cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)[1]
# only proceed if at least one contour was found
if len(countours) > 0:
# find the largest contour in the mask, then use
# it to compute the minimum enclosing circle and
# centroid
for (i,c) in enumerate(countours):
((x, y), radius) = cv2.minEnclosingCircle(c)
M = cv2.moments(c)
if M["m00"] > 0:
center = (int(M["m10"]/M["m00"]), int(M["m01"]/M["m00"]))
centerString = str(center)
x = (int(M["m10"]/M["m00"]))
y = (int(M["m01"]/M["m00"]))
else:
center = int(x), int(y)
if radius > 10:
# draw the circle and centroid on the frame,
cv2.circle(frame, (int(x), int(y)), int(radius),
(0, 255, 255), 2)
cv2.circle(frame, center, 5, (0, 0, 255), -1)
# then update the ponter trail
if self.previous_position:
cv2.line(self.trail, self.previous_position, center,
(255, 255, 255), 2)
cv2.add(self.trail, frame, frame)
print center
self.previous_position = center
if len(countours) < 1:
center = 0
self.trail = numpy.zeros((self.cam_height, self.cam_width, 3),
numpy.uint8)
self.previous_position = None
それはあなたの質問に答えた場合に認められたとして、あなたは答えをマークすることができます。しかし、これらのアプローチのいずれかを試してみて、それらを実装するのに問題があるなら、私はそれを拡張することができます! –
あなたの最初の答えが輪郭を見つけてラベル付けするために解決されましたが、ラベルは幅と変化に依存します(0は幅の最高値、上の画像、1は低い値です)。ありがとう。 –