Skip to content

Latest commit

 

History

History
77 lines (41 loc) · 1.39 KB

全局二值化-inRange.md

File metadata and controls

77 lines (41 loc) · 1.39 KB

全局二值化(inRange)

inRange 函数判断图像的像素点是否在阈值范围内.

如果在阈值范围内该点的值就为逻辑1, 在灰度图中用值255表示. 如果在范围之外, 就为逻辑0, 用值0表示.

注意返回的mask是二维的

mask = cv2.inRange(src, lowerb, upperb)

参数解释

  • src : 源图像
  • lowerb: 颜色阈值下界 lower boundary
  • upperb: 颜色阈值上界 upper boundary

CH4.2中我们获取了棋子颜色的统计图.

20180202_ches_rgb_bins2.png

由此得出了上界与下界.

注意阈值格式是BGR格式的 :(B,G,R)

lowerb : (50, 36, 36)

upperb : (104, 80, 80)

CH4.3_BinaryInRange.py

import cv2
import numpy as np

# 读入图片
img = cv2.imread('screenshot.png')
# 判断图片是否正确读入
if img is None:
    print("请检查图片路径")
    exit()

# 阈值下界
lowerb = (50, 36, 36)
# 阈值上界
upperb = (104, 80, 80)

# 图像二值化
mask = cv2.inRange(img, lowerb, upperb)

cv2.namedWindow("mask", flags= cv2.WINDOW_NORMAL | cv2.WINDOW_FREERATIO)
cv2.imshow('mask', mask)
cv2.waitKey(0)

Screenshot_20180204_145951.png

mask其实是一个灰度图 , 只有两个值 0 跟255

可以看到白色的地方就是逻辑1 值为255

黑色的地方就是0.