# Calculating center of object

Hello, currently I am trying to calculate the center of an object using the following code

import cv2
import numpy as np
vid = cv2.VideoCapture(0)
vid.set(10,.05)

def processVid():
while(True):
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
lower_green = np.array([70,200,200])
upper_green = np.array([90,255,255])
getPixel(res)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
vid.release()
cv2.destroyAllWindows()

def getPixel(img):
for r in range(0,479):
for c in range(0,639):
print img[r,c]

processVid()


Currently, this code only prints out the pixel value at the row and column, as I'm having a bit of difficulty determining the best solution to what I'm trying to accomplish. I want this code to take a video feed, apply the designated filters to the video feed and then be able to determine the distance away that the object from the center of the video (i.e. if res is 640x480, I want to find the distance away from pixel @ (320,240)). Here is an example of what my current image looks like, and I want to be able to find the center of that object to the center of the video feed. What I had thought to do was to run through every pixel, and find whether it was black or colored, and then based on that be able to calculate the center. In doing this, it was a slow process (and I mean slow), not to mention I was running this off of a raspberry pi, and it is a video feed so the process would have to be almost instantaneous for accuracy in distance. I'm just curious if there is a built in OpenCV function that does this already? I haven't been able to find any documentation for this yet. edit retag close merge delete

Sort by » oldest newest most voted The Moments function calculates this, and much more besides.

In this particular case, you want m10/m00 and m01/m00 as the x and y center, or perhaps it's the other way around. Make sure to set the binary image to true, and use the mask. It's much quicker.

more

Official site

GitHub

Wiki

Documentation