OpenCV 图像二值化

全局二值化

二值化:将图像的每个像素变成两种值,比如0,255.
#cv2.threshold(src,thresh,maxval,type[,dst])
##src 最好是灰度图
##thresh:阈值
##maxval:最大值,最大值不一定是255
##type:操作类型:常见的操作类型如下:
#####THRESH_BINARY
#####THRESH_BINARY_INV
#####THRESH_TRUNC
#####THRESH_TOZERO
#####THRESH_TOZERO_INV

import cv2
import numpy as np

#导入图片
img = cv2.imread('./small.jpg')

#二值化操作是对灰度图像操作,把dog变成灰度图像。
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

#注意,threshold会返回两个值,一个是阈值,二值化处理后的图片
thresh,dog1=cv2.threshold(gray,170,255,cv2.THRESH_BINARY)



cv2.imshow('img',img)
# cv2.imshow('dog1',dog1)
cv2.imshow('dog',np.vstack((dog1,gray)))
cv2.waitKey(0)
cv2.destroyAllWindows()

自适应阈值二值化

#此时阈值是根据图像上的每一个小区域计算与其对应的阈值。因此在同一幅图像上的不同区域采用的是不同的阈值,
#从而使我们能在亮度不同的情况下得到更好的结果。
#cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst])
####adaptiveMethod:指定计算阈值的方法
######cv2.ADPTIVE_THRESH_MEAN_C:阈值取自相邻区域的平均值
######cv2.ADPTIVE_THRESH_GAUSSIAN_C:阈值取值相邻区域的加权和,权重为一个高斯窗口。
####Block Size:邻域大小(用来计算阈值的区域大小)
####C:这就是一个常数,阈值等于的平均值或者加权平均值减去这个常数

import cv2
import numpy as np

#导入图片
img = cv2.imread('./big.jpg')

#二值化操作是对灰度图像操作,把dog变成灰度图像。
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)


#自适应阈值二值化只有一个返回值。
#dst3=cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,3,0)
dst119=cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,119,0)

cv2.imshow('img',img)
cv2.imshow('big',np.vstack((gray,dst119)))
cv2.waitKey(0)
cv2.destroyAllWindows()

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值