Python3与OpenCV3.3 图像处理(十五)--图像二值化

来源:互联网 发布:沪牌代拍软件 编辑:程序博客网 时间:2024/06/07 21:46

一、什么是二值图像

图像中只有0和1,即1表示黑色,0表示白色

 
二、图像二值化的方法

图像二值化的方法:全局阈值,局部阈值。一般来说局部阈值要优于全局阈值。在OpenCV中图像二值化的方法有OTS,Triangle,自动与手动,衡量阈值方法是否是符合场景的,就是要看处理之后图像的信息是否丢失


三、示例代码

import cv2 as cvimport numpy as npdef threshold(image):    """图像二值化:全局阈值"""    #图像灰度化    gray=cv.cvtColor(image,cv.COLOR_RGB2GRAY)    #变为二值图像    #gary:灰度图像    #0:阈值,如果选定了阈值方法,则这里不起作用    ret ,binary=cv.threshold(gray,0,255,cv.THRESH_BINARY | cv.THRESH_TRIANGLE)    print(ret)    cv.imshow("binary",binary)def local_threshold(image):    """局部阈值"""    # 图像灰度化    gray = cv.cvtColor(image, cv.COLOR_RGB2GRAY)    # 变为二值图像    binary = cv.adaptiveThreshold(gray,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY,25,10)    cv.imshow("local_threshold", binary)def custom_threshold(image):    """局部阈值"""    # 图像灰度化    gray = cv.cvtColor(image, cv.COLOR_RGB2GRAY)    h,w=gray.shape[:2]    m=np.reshape(gray,[1,w*h])    mean=m.sum()/(w*h)    # 变为二值图像    binary = cv.threshold(gray,mean,255,cv.THRESH_BINARY)    cv.imshow("custom_threshold", binary)src=cv.imread('textImg.jpg')cv.waitKey(0)cv.destroyAllWindows()


原创粉丝点击