2017-06-29 6 views
0

ラズベリーパイのキネクトを使ったオブジェクトトラッキングに取り組んでいます。 私は2つのコードを混在させています。kinectでほぼオブジェクトを見つけて、OpenCVフィルタを使ってこのプロセスがグレーのオブジェクトを追跡した後にグレーの色を設定する必要があるからです! しかし、私はできません!私はラズベリーパイのキネクトによるオブジェクトトラッキング

import freenect 
import cv2 
import numpy as np 

""" 
Grabs a depth map from the Kinect sensor and creates an image from it. 
""" 
def getDepthMap(): 
depth, timestamp = freenect.sync_get_depth() 

np.clip(depth, 0, 2**10 - 1, depth) 
depth >>= 2 
depth = depth.astype(np.uint8) 

return depth 

while True: 
depth = getDepthMap() 
#text_file = codecs.open("log2.txt", "a","utf-8-sig") 
#text_file.write(str(depth)+'\n') 

depth = getDepthMap() 
blur = cv2.GaussianBlur(depth, (5, 5), 0) 
cv2.imshow('image', blur) 

このコードは、私は2色でオブジェクトを表示することができます助けてください:黒と白の 黒がほとんどである--- 私はオブジェクト追跡するには、このコードをミックスしたいです。しかしicant。

# find contours in the mask and initialize the current 
# (x, y) center of the ball 
cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, 
    cv2.CHAIN_APPROX_SIMPLE)[-2] 
center = None 

# only proceed if at least one contour was found 
if len(cnts) > 0: 
    # find the largest contour in the mask, then use 
    # it to compute the minimum enclosing circle and 
    # centroid 
    c = max(cnts, key=cv2.contourArea) 
    ((x, y), radius) = cv2.minEnclosingCircle(c) 
    M = cv2.moments(c) 
    center = (int(M["m10"]/M["m00"]), int(M["m01"]/M["m00"])) 

    # only proceed if the radius meets a minimum size 
    if radius > 10: 
     # draw the circle and centroid on the frame, 
     # then update the list of tracked points 
     cv2.circle(frame, (int(x), int(y)), int(radius), 
      (0, 255, 255), 2) 
     cv2.circle(frame, center, 5, (0, 0, 255), -1) 

# update the points queue 
pts.appendleft(center) 

http://www.pyimagesearch.com/2015/09/14/ball-tracking-with-opencv/

答えて

0

あなたのコード内のロジックは、右のようです。私はいくつかの実装エラーに気づきました。

まず、while Trueの後にブロックをインデントする必要があります。

最後に
while True: 
    depth = getDepthMap() 
    blur = cv2.GaussianBlur(depth, (5, 5), 0) 
    cv2.imshow('image', blur) 
    cv2.waitKey(1) 

、あなたが以前のもの(blur)の出力と次のブロック(mask)の入力を関連付ける必要があります。OpenCVのはimshow()で立ち往生しないように、また、waitKey()への呼び出しを追加する必要があります:

mask = blur 
関連する問題