美文网首页AI人工智能与数学之美
[OpenCV官方教程中文版-段力辉译]-cv2.cvtColo

[OpenCV官方教程中文版-段力辉译]-cv2.cvtColo

作者: 六千宛 | 来源:发表于2021-06-17 11:27 被阅读0次
    • opencv的HSV格式中,H(色彩)的取值范围是[0, 179],S(饱和度)的取值范围是[0,255],V(亮度)的取值范围是[0, 255],不同软件使用的值可能会不一样。
    • cv2.cvtColor()函数cv2.inRange()函数的功能很简单,
    • cv2.cvtColor()用来实现类型转换,比如BGR==>HSV或者BGR==>GRAY等等,下面的物体跟踪就是基于HSV值来做的。
    • cv2.inRange()在这里主要是用来根据设定阈值范围生成掩模,根据掩模再与原图像进行按位与运算。为了查找方便,附上各个颜色与其对应的HSV值:


      image.png

    现在准备同时提取图片中蓝色、绿色、黄色物体,同理视频也可以操作,本文主要针对图片,操作对象如下图:


    image.png

    以下同时提取蓝色、绿色和黄色模块,代码如下:

    import cv2
    import numpy as np
    #将读取图片转换HSV格式
    img = cv2.imread('444.jpg')
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    #蓝色阈值设定
    lower_blue = np.array([100, 43, 46])
    upper_blue = np.array([124, 255, 255])
    #绿色阈值设定
    lower_green = np.array([35, 43, 46])
    upper_green = np.array([77, 255, 255])
    #黄色
    lower_yellow = np.array([11, 43, 46])
    upper_yellow = np.array([34, 255, 255])
    #通过cv2.inRange()生成掩模
    img_blue_mask = cv2.inRange(hsv, lower_blue, upper_blue)
    img_green_mask = cv2.inRange(hsv, lower_green, upper_green)
    img_yellow_mask = cv2.inRange(hsv, lower_yellow, upper_yellow)
    #掩模求和最后和原图像进行按位与计算
    det1 = cv2.add(img_blue_mask, img_green_mask)
    det = cv2.add(det1, img_yellow_mask)
    res = cv2.bitwise_and(img, img, mask=det)
    
    cv2.imshow('image', res)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    image.png

    相关文章

      网友评论

        本文标题:[OpenCV官方教程中文版-段力辉译]-cv2.cvtColo

        本文链接:https://www.haomeiwen.com/subject/rgxcyltx.html