怎么在python中使用cv2.inRange函数

  介绍

本篇文章给大家分享的是有关怎么在python中使用cv2。inRange函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

Python主要用来做什么

Python主要应用于:1,网络开发;2、数据科学研究;3,网络爬虫;4、嵌入式应用开发,5日游戏开发;6桌面应用开发。

具体用法

hsv =, cv2.cvtColor (rgb_image, cv2.COLOR_BGR2HSV)

然后利用cv2。inRange函数设阈值,去除背景部分

mask =, cv2.inRange (hsv, lower_red,, upper_red), # lower20===祝辞0,upper200==祝辞0

函数很简单,参数有三个

第一个参数:hsv指的是原图

第二个参数:lower_red指的是图像中低于这个lower_red的值,图像值变为0

第三个参数:upper_red指的是图像中高于这个upper_red的值,图像值变为0

而在lower_red ~ upper_red之间的值变成255

lower_red =, np.array([20日,20日,20))   时间=upper_red  np.array ([200,, 200,, 200])   mask =, cv2.inRange (hsv, lower_red,, upper_red), # lower20===祝辞0,upper200==祝辞0,低~高==比;255年

就是将低于lower_red和高于upper_red的部分分别变成0,lower_red ~ upper_red之间的值变成255

具体用法如下

, hsv =, cv2.cvtColor (rgb_image, cv2.COLOR_BGR2HSV)=,,lower_red  np.array([20日,20日,20))=,,upper_red  np.array ([200,, 200,, 200])   ,# mask →1,通道=,,mask  cv2.inRange (hsv, lower_red,, upper_red), # lower20===祝辞0,upper200==祝辞0

<强>补充:色彩阀值化处理,openCV-python中inRange()等相关函数实测

色彩阀值化

在图像处理的过程中,使用各种形态学操作或者滤波的方式来突显我们关注的元素,同时降低噪声并减少干扰我们提取关键元素的影响项。除了这些方法外,我们可以在原图中先依据颜色的特征,提取出更为关键的像素。就像车道检测时,一般车道只有两种颜色:黄色和白色,所以我们可以在RGB色彩空间(颜色空间)对这两种颜色进行过滤从而提取出车道线的像素。

色彩空间:使用一组值(通常使用三个,四个值或者颜色成分)表示颜色方法的抽象数学模型。有利用原色相混的比例表示的色彩空间,如RGB(红、绿、蓝)颜色空间;也有利用不同的概念表示的色彩空间,如HSV(色相色调,饱和度饱和,明度值)以及高速逻辑(色相色调,饱和度饱和,亮度轻/亮度)。

在OpenCV中,RGB三通道的图像的读取cv2.imread()的结果是以BGR顺序排列的,而在使用matplotlib的plt.imread()时,读取的通道排列顺序则为RGB。因此此处应当注意区别。

OpenCV中cv2.inRange()函数是实现该功能的关键,我们先看看官网对该函数的定义:

dst =, cv.inRange (src的不同之处是,lowerb, upperb (, dst),)

检测数组元素是否位于其他两个元素之间。

该函数检测范围方式如下:

对于单通道输入的每个元素:

怎么在python中使用cv2。inRange函数

对于双通道输入:

怎么在python中使用cv2。inRange函数

同样应用于四通道

也就是说,如果src (I)在指定的1 d, 2 d, 3 d,…框内则dst (I)为255年,否则为0。当下边界和/或上边界参数为标量时,应省略上述公式中在上、下边界处的索引(我)。

各参数详细含义:

src输入的数组

lowerb下边界数组或标量。

upperb上边界数组或标量。

dst与src和CV_8U类型大小相同的输出数组。

接下来将结合简单的例子通过python更好地理解这个函数:

import  matplotlib.pyplot  as  plt   import  numpy  as  np   import  cv2   #,对图片进行读取   时间=img_cv2  cv2.imread (& # 39; D: \ \ \ \测试CVtest.jpg& # 39;)   打印(img_cv2)

为了方便理解,我用画板工具画了一个5×5像素点的红色图片。上述代码运行结果为:

[[[, 36岁,27岁,237年)   (才能,36岁,27岁,237年)   (才能,36岁,27岁,237年)   (才能,36岁,27岁,237年)   (才能,36岁,27岁,237]]   ,[[,36岁,27岁,237年)   (才能,36岁,27岁,237年)   (才能,36岁,27岁,237年)   (才能,36岁,27岁,237年)   (才能,36岁,27岁,237]]   ,[[,36岁,27岁,237年)   (才能,36岁,27岁,237年)   (才能,36岁,27岁,237年)   (才能,36岁,27岁,237年)   (才能,36岁,27岁,237]]   ,[[,36岁,27岁,237年)   (才能,36岁,27岁,237年)   (才能,36岁,27岁,237年)   (才能,36岁,27岁,237年)   (才能,36岁,27岁,237]]   ,[[,36岁,27岁,237年)   (才能,36岁,27岁,237年)   (才能,36岁,27岁,237年)   (才能,36岁,27岁,237年)   (才能,36岁,27岁,237]]]

怎么在python中使用cv2.inRange函数