HSV:色调、饱和度和明度。这种格式适用于色调,因此很容易过滤颜色——这意味着,我们可以使用角度范围,而不必计算红色、绿色和蓝色之间的组合范围。
我们可以用Numpy来定义HSV的上下边界。应用函数.inRange过滤这些值,并创建一个掩码,然后我们可以使用.bitwise_and在饱和状态下应用这个掩码,它会使边界以外的一切都变成零。换句话说:我们可以过滤一些颜色,然后将其余所有颜色设置为灰度。# read img and convert to HSVimg = cv2.imread('img2.jpeg')img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)# split dimensionsH, S, V = cv2.split(img)# upper and lower boundarieslower = np.array([80, 0, 0]) upper = np.array([120, 255, 255])# build maskmask = cv2.inRange(img, lower, upper)# apply mask to saturationS = cv2.bitwise_and(S, S, mask=mask)# assemble imageimg = cv2.merge([H, S, V])# convert to RGB and displayimg = cv2.cvtColor(img, cv2.COLOR_HSV2RGB)show(img)
分割图像也可以让我们更容易地检测它的构图。我们可以从RGB绘制颜色,从HSV绘制饱和度,或任何其他我们想要的通道。img = cv2.imread('img2.jpeg')B, G, R = cv2.split(img) show(B)
img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)H, S, V = cv2.split(img)show(S)
使用“灰色”色图时,值从白色(低)到黑色(高)。通过查看第一张map图,我们可以看出,地面上的蓝色强度高于建筑物中的蓝色强度,并且通过饱和度图可以看出,滑板周围的值高于图像中其他部分的值。本文我们探索了如何加载和显示图片,如何将数组转换为不同的颜色格式以及如何访问,修改和过滤通道。资源:OpenCV读取图像;https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_gui/py_image_display/py_image_display.htmlOpenCV颜色转换;https://docs.opencv.org/3.4/de/d25/imgproc_color_conversions.htmlMatplotlib显示图像;https://matplotlib.org/api/_as_gen/matplotlib.pyplot.imshow.html数组上的OpenCV操作;https://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.htmlOpenCV基本操作;https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_core/py_basic_ops/py_basic_ops.html参考链接:https://towardsdatascience.com/getting-started-with-opencv-249e86bd4293