1. 首页 >音视频流媒体 >opencv >

opencv 二值化图形 threshold

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()