您当前的位置: 首页 > 

跋扈洋

暂无认证

  • 4浏览

    0关注

    221博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

利用阈值分割原理,对给定图像编程实现二值、反二值、截断、反截断、大津阈值、自适应阈值等类型阈值图像分割,给出实现源码和结果图像。

跋扈洋 发布时间:2020-11-23 21:03:10 ,浏览量:4

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

img = cv2.imread('1.jpg', 0)  # 0是第二个参数,将其转为灰度图

img = cv2.medianBlur(img, 5)
ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)#二进制阈值化
ret,thresh2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)#反二进制阈值化
ret,thresh3 = cv2.threshold(img,127,255,cv2.THRESH_TRUNC)#截断阈值化
ret,thresh4 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO)#阈值化为0
ret,thresh5 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV)#反阈值化为0
ret,thresh6 = cv2.threshold(img,127,255,cv2.THRESH_OTSU)#大津阈值
# 11 为 邻域大小,   2为C值,常数
th2 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, \
                            cv2.THRESH_BINARY, 11, 2)    #阈值取邻域的平均值
th3 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, \
                            cv2.THRESH_BINARY, 11, 2)    #阈值取自邻域的加权和平均值,权重分布为一个高斯函数分布

titles = ['Original', 'THRESH_BINARY','THRESH_BINARY_INV','THRESH_TRUNC','THRESH_TOZERO',
          'THRESH_TOZERO_INV','THRESH_OTSU','Adaptive Mean Thresholding', 'Adaptive Gaussian Thresholding']
images = [img, thresh1,thresh2,thresh3,thresh4,thresh5,thresh6, th2, th3]
for i in range(8):
    plt.subplot(3, 3, i + 1), plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()

结果

运行前 在这里插入图片描述 运行结果

后续

如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏。 或者关注公众号。

编写不易,感谢支持。

关注
打赏
1663745539
查看更多评论
立即登录/注册

微信扫码登录

0.0831s