【问题标题】:Get value from detect colour python opencv从检测颜色python opencv中获取值
【发布时间】:2014-04-07 04:52:55
【问题描述】:

对于我的项目,我想使用运行Raspberry Pi 的网络摄像头来控制一辆遥控车避开红色障碍物。

我可以控制我的遥控车,但我对openCV 了解不多。我也可以使用网络摄像头检测选定的颜色,但我不知道如何将图像中的颜色值获取到我的遥控车。

我遇到的问题是我的车不知道摄像头前面有一个蓝色物体。

这是我的代码:

import cv2
import numpy as np 
cap = cv2.videoCapture(0)
while(1):
# take each frame
_,frame=cap.read()

#convert BGR to HSV
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

#define range of blue color in HSV
lower_blue = np.array([160,50,50],dtype=np.uint8)
uper_blue np.array([179,255,255],dtype=np.uint8)

#Threshold the HSV image to get only blue colors
mask = cv2.inRange(hsv,lower_blue,upper_blue)

cv2.imshow('mask',mask)
k=cv2.waitKey(5) &0xFF
if k == 27 :
   break
cv2.destroyAllwindows() 

【问题讨论】:

  • 在窗口上显示mask,您会看到其中的对象是在您指定的范围之间定义的对象。之后,对该图像的像素进行迭代将得到这些对象的具体 (x,y) 坐标,因此您可以将机器人转向其他方向。
  • 谢谢先生,但是如果有任何关键字,我应该使用哪个函数或命令来迭代像素以获得 x 和 y 坐标

标签: python opencv raspberry-pi


【解决方案1】:

您可以使用以下方法获取颜色值:

values = img[100,100]

您必须检查 Mask 是否为 255(范围内的像素)并从您的图像 (hsv) 中获取颜色。

要遍历您可以使用的图像:

img.shape

返回行、列和通道。

总的来说,你会得到类似的东西:

row, col, chan = img.shape
for r in row:
    for c in col:
        if mask[r,c] == 255:
            print img[r,c]

您可以在OpenCV Python Tutorial找到更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2014-03-15
    相关资源
    最近更新 更多