opencv inrange


原文链接: opencv inrange

OpenCV中的inRange()函数可实现二值化功能(这点类似threshold()函数),更关键的是可以同时针对多通道进行操作,使用起来非常方便!
主要是将在两个阈值内的像素值设置为白色(255),
而不在阈值区间内的像素值设置为黑色(0),该功能类似于之间所讲的双阈值化操作。

import cv2
import numpy as np

x= np.arange(27).reshape(3,3,3)
x[np.where(x==21)]=1
x[np.where(x==22)]=2
x[np.where(x==24)]=4
x[np.where(x==25)]=5
array([[[18, 19, 20],
        [ 1,  2, 23],
        [ 4,  5, 26]],

       [[18, 19, 20],
        [ 1,  2, 23],
        [ 4,  5, 26]],

       [[18, 19, 20],
        [ 1,  2, 23],
        [ 4,  5, 26]]])
y=np.array([0,1,2])
z=np.array([18,19,20])
cv2.inRange(x,y,z)

结果

array([[255, 255, 255],
       [255, 255, 255],
       [255,   0,   0]], dtype=uint8)

由于     [1, 2, 23],
        [4, 5, 26]有元素超出范围,那么结果为0
`