python中opencv库的使用 (一) 图像的二值化

6 篇文章 0 订阅
2 篇文章 0 订阅

图像处理中,二值图像是经常用到的处理图像,下面简单介绍一下opencv中的二值化处理

import cv2 as cv
import matplotlib.pyplot as plt

image = cv.imread('./klay.jpg')
gray_image = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
# 其中127为设定的阈值,255为设定的最大阈值, 0为黑色 255为白色
# 像素小于阈值127设为0,大于127的为最大阈值255
ret, bw_image1 = cv.threshold(gray_image, 127, 255, cv.THRESH_BINARY)
# 像素小于阈值127设为最大阈值255,大于127的为0
ret, bw_image2 = cv.threshold(gray_image, 127, 255, cv.THRESH_BINARY_INV)
# 像素小于阈值127的保持不变,大于阈值设为最大阈值255
ret, bw_image3 = cv.threshold(gray_image, 127, 255, cv.THRESH_TRUNC)
# 像素值小于阈值设为0, 大于阈值127的保持不变
ret, bw_image4 = cv.threshold(gray_image, 127, 255, cv.THRESH_TOZERO)
# 像素值小于阈值的保持不变, 大于阈值127的设为0
ret, bw_image5 = cv.threshold(gray_image, 127, 255, cv.THRESH_TOZERO_INV)
# 大津法通过图像灰度信息自动获取最佳阈值
ret, bw_image6 = cv.threshold(gray_image, 127, 255, cv.THRESH_OTSU)
titles = ['image', 'gray_image', 'BINARY', 'BINARY_INV', 'TRUNC', 'TOZERO', 'TOZERO_INV', 'THRESH_OTSU']
images = [image, gray_image, bw_image1, bw_image2, bw_image3, bw_image4, bw_image5, bw_image6]
for i in range(len(images)):
    plt.subplot(2, 4, i+1), plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()

 

                           

opencv自带一种局部自适应阈值分割,个人比较推荐,对于局部细节要求比较高的场景,应用的效果还是非常不错的

import cv2 as cv
import matplotlib.pyplot as plt
image = cv.imread('./klay.jpg')
gray_image = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
# 255为设定的最大阈值, 制定的自适应算法 ADAPTIVE_THRESH_MEAN_C 或 ADAPTIVE_THRESH_GAUSSIAN_C
# 15 表示邻域块大小,计算区域阈值,一般为3,5,7,9...
# 5 计算阈值过程中的需要减去的常量
bw_image = cv.adaptiveThreshold(gray_image, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 15, 5) # 局部自适应二值化
cv.imshow('', bw_image)
cv.waitKey(0)
cv.destroyAllWindows()

 

                                    

可以看出自适应阈值算法的细节更加丰富,效果更好

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值