2014-02-23 61 views
-3
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([110,50,50]) 
    upper_blue = np.array([130,255,255]) 

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

    # Bitwise-AND mask and original image 
    res = cv2.bitwise_and(frame,frame, mask= mask) 

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

cv2.destroyAllWindows() 

请注意:我是新来打开简历,所以请帮助家伙!请为我解释这个opencv程序

在这个程序

1),而读一帧,为什么会出现符号“_”,帧之前

是它语法??

2)指定蓝色的下限和上限。 是RGB值还是BGR值或HSV值?

我怎样才能找到像红,绿等其他颜色的下界和上界?

请解释查找其他颜色的值的过程,我试过其他颜色,但它给了我黑屏输出hsv和res!

3)CAn有人更改此程序检测红色或其他颜色,所以我可以知道区别?

+1

广告1:'_'是一个像其他任何变量。你也可以将它命名为“草莓”或“阿洛哈”。如果您对其内容不感兴趣,通常会调用变量'_'。 – Hyperboreus

+0

我想补充一点,首先出现'_'的原因是cap.read()返回2个值,所以我们只把第一个值放到'_'中,因为我们不想要使用它(它有点奇怪,因为根据[doc](http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#videocapture-read)它只能在Python版本的API中返回,并在我的经验中,它完全无用......) – mirosval

回答

1
  1. 这是元组拆包; cap.read()返回两个值,我们将第一个分配给_(约定为“我们不会使用此”),第二个分配给frame
  2. 评论字面意思是“in hsv”。
  3. 你只需要指定你自己的界限,或者改变已经存在的界限,并亲自看到差异。使用HSV converter来查看您正在使用的颜色。如果范围内的颜色不在您处理的图像中,则颜色会变黑。