如何修改这个python opencv程序从thresholded图像获取xy坐标

时间:2014-03-17 16:16:16

标签: python c++ opencv numpy

我有一个opencv程序来跟踪蓝色对象

有人可以修改它以在将其阈值化为二进制图像后找到从网络摄像头跟踪的对象的中心

PS:我希望这个程序可以使用网络摄像头而不是图像

import numpy as np
import cv2
cap = cv2.VideoCapture(1)
while(True):
ret, frame = cap.read()  
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])
mask = cv2.inRange(gray, lower_blue, upper_blue)
res = cv2.bitwise_and(frame,frame, mask= mask)
# Display the resulting frame
cv2.imshow('frame',gray)
cv2.imshow('mask',mask)
cv2.imshow('res',res)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

我想从网络摄像头的阈值图像中找到白色斑点的中心即xy坐标

我有用于查找阈值图像的xy坐标的代码

我想修改它来自网络摄像头的实时视频

HERE是查找二进制图像坐标的代码

for y in xrange(img.size[1]):
for x in xrange(img.size[0]):
if pixels[x, y] == 0:
xlist.append(x)
ylist.append(y)
xleft = min(xlist)
xright = max(xlist)
ytop = min(ylist)
ybot = max(ylist)
xax = (xleft+xright)/2
yax = (ytop+ybot)/2

有人可以将这2个代码组合起来,使其适用于网络摄像头的实时反馈

1 个答案:

答案 0 :(得分:0)

你想在bitwise_and之后findContours,然后获取轮廓的boundingRect(或矩)以获得x,y位置。

忘了你的"找到二进制图像的坐标"理念。 (不,你想要重新发明连接组件'。使用内置的东西代替)