【问题标题】:How to modify this python opencv program to get xy coordinates from thresholded image如何修改此 python opencv 程序以从阈值图像中获取 xy 坐标
【发布时间】:2014-03-17 16:16:15
【问题描述】:

我有一个 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 坐标的代码

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

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

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 个代码组合起来,使其适用于来自网络摄像头的实时供稿

【问题讨论】:

    标签: python c++ opencv numpy


    【解决方案1】:

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

    忘记你的“找到二进制图像的坐标”的想法。 (不,您不想重新发明“连接组件”。改用内置的东西)

    【讨论】:

    • 我使用了 findContours() 但是当我将它存储到一个数组时说 cnt=contours[4] ,它说“数组索引超出范围”!!!!!! ,有人可以将使用 findContours() 查找 xyy 坐标的特定代码添加到上述 pgm 中吗??
    • 你必须先检查 len(contours) 才能访问项目。
    • 不,对不起,我不会写你的程序。
    • 我用了moments,GetSpacialmoments()来找坐标!!!感谢支持
    猜你喜欢
    • 1970-01-01
    • 2017-11-18
    • 2022-06-11
    • 2019-08-22
    • 1970-01-01
    • 2016-11-15
    • 2017-06-23
    • 2022-06-11
    • 2015-09-11
    相关资源
    最近更新 更多