首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >简单阈值,自适应阈值,Otsu's二值化等图像阈值处理方法。

简单阈值,自适应阈值,Otsu's二值化等图像阈值处理方法。

作者头像
裴来凡
发布2022-05-28 15:57:44
发布2022-05-28 15:57:44
9290
举报
代码语言:javascript
复制
import cv2
import numpy as np
from matplotlib import pyplot as plt

img_path = 'C:/Users/xpp/Desktop/lena.jpg'


img = cv2.imread(img_path)

img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)


ret,th1 = cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY)
ret,th2 = cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY_INV)
ret,th3 = cv2.threshold(img_gray,127,255,cv2.THRESH_TRUNC)
ret,th4 = cv2.threshold(img_gray,127,255,cv2.THRESH_TOZERO)
ret,th5 = cv2.threshold(img_gray,127,255,cv2.THRESH_TOZERO_INV)

titles = ['oringnal','gray_img','BINGARY','BINGARY_INV','TRUNC','TOZERO','TOZERO_INV']
images = [img,img_gray,th1,th2,th3,th4,th5]
i = 0
for i in range(7):
   plt.subplot(3,3,i+1)
   plt.imshow(images[i],'gray')
   plt.title(titles[i])
   plt.xticks([]),plt.yticks([])

plt.show()

import cv2
import numpy as np
from matplotlib import pyplot as plt



img1 =cv2.imread('C:/Users/xpp/Desktop/lena.jpg',0)

img = cv2.medianBlur(img1,5)

ret, th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,
                          cv2.THRESH_BINARY,11,2)
th3 =cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,
                          cv2.THRESH_BINARY,11,5)



th4 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)

th5 =cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,5)

titles = [
  'origianl_ images','means-image','gloabal(v = 127)','Mean(C =2)',
'Mean(C =5)','Gayssian(C = 2)',
'Gayssian(C = 5)'
]


images =[img1,img,th1,th2,th3,th4,th5]

num = 1
for i in range(2,6):
  plt.subplot(2,2,num),plt.imshow(images[i],'gray')
  plt.title(titles[i])
  plt.xticks([]),plt.yticks([])
  num += 1

plt.show()

import cv2
import numpy as np
from matplotlib import pyplot as plt



img1 =cv2.imread('C:/Users/xpp/Desktop/lena.jpg',0)


ret1,th1 = cv2.threshold(img1,127,255,cv2.THRESH_BINARY)


ret2,th2 = cv2.threshold(img1,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)



blur =cv2.GaussianBlur(img1,(5,5),0)

ret3,th3 =cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

## plot all the images and their histogram
images =[img1,0,th1,
        img1,0,th2,
        blur,0,th3]
titles =[

  'Ori','Hist','Glo(v =127)',
  'Ori', 'Hist', 'Ostu',

  'Gass', 'Hist', 'Ostu',

]


for i in range(3):
  plt.subplot(3,3,i*3+1),plt.imshow(images[i*3],'gray')
  plt.title(titles[i*3]),plt.xticks([]),plt.yticks([])
  plt.subplot(3,3,i*3+2),plt.hist(images[i*3].ravel(),256)
  plt.title(titles[i*3+1]),plt.xticks([]),plt.yticks([])
  plt.subplot(3,3,i*3+3),plt.imshow(images[i*3+2],'gray')
  plt.title(titles[i*3+2]),plt.xticks([]),plt.yticks([])
plt.show()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档