您的位置:首页 > 编程语言 > Python开发

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

2017-12-09 18:40 543 查看
一、什么是二值图像

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

 
二、图像二值化的方法

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

三、示例代码

import cv2 as cv
import numpy as np

def 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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: