threshold 函数主要是用于对图形进行二值化,可以令图像灰度大于阈值的,为一个值,低于阈值的,为另一个值。这就可以实现图像的二值化。
threshold(图形,阈值,分配的值,处理模式)
参数:
参数1,需要处理的图像:注意,需要处理的图像需要被转成灰度图像
参数2,阈值:设定阈值,分界值
参数3,分配的值:如果一个像素的灰度值,大于或者小于(取决于参数4的选择)阈值,会被赋予分配的值
参数4,阈值处理模式选择:
cv2.THRESH_BINARY
如果像素值大于阈值,像素值就会被设为参数3
小于等于阈值,设定为0
cv2.THRESH_BINARY_INV
如果像素值大于阈值,像素值为0
小于等于阈值,设定为参数3
cv2.THRESH_TRUNC
如果像素大于阈值,设定为阈值
小于等于阈值,保持原像素值
cv2.THRESH_TOZERO
大于阈值,保持原像素值
小于等于,设定为0
cv2.THRESH_TOZERO_INV
大于阈值,设定为0
小于等于,保持原像素值
输出:
retVal,在这些用法中,可以简单理解为返回输入参数中的阈值。
thresh,返回处理后的图像
例如 :
import imutils import cv2 width = 800 if __name__ == "__main__": camera = cv2.VideoCapture(0) firstFrame = None while True: (grabbed, frame) = camera.read() text = "Unoccupied" if not grabbed: break frame = imutils.resize(frame, width=width) gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) gray = cv2.GaussianBlur(frame, (21, 21), 0) if firstFrame is None: firstFrame = gray continue frameDelta = cv2.absdiff(firstFrame, gray) thresh = cv2.threshold(frameDelta, 25, 255, cv2.THRESH_BINARY)[1] cv2.imshow("Security Feed", thresh) if cv2.waitKey(1) & 0xFF == ord('q'): break camera.release() cv2.destroyAllWindows()