从Python OpenCV检测颜色中获取值

1 投票
1 回答
2407 浏览
提问于 2025-04-18 01:40

在我的项目中,我想用一个运行在 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() 

1 个回答

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 教程

撰写回答