zoukankan      html  css  js  c++  java
  • opencv图像阈值操作

    使用threshold方法和adaptivethreshold方法对图像进行阈值分割操作。

    1、使用threshold方法,设置一个阈值,将大于阈值的值变换为最大值,小于阈值的值变换为0。

    #-*- coding:utf-8 -*-
    
    # opencv 中阈值操作
    
    import cv2
    import numpy
    
    
    #读取一张图片
    img = cv2.imread('bookback.jpg',cv2.IMREAD_COLOR)
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    #使用threshold方法进行阈值分割,大于阈值的设置为255,小于阈值的为0
    ret,threshold = cv2.threshold(img,10,255,cv2.THRESH_BINARY)
    #对灰度图像进行阈值处理
    ret1,threshold1 = cv2.threshold(gray,10,255,cv2.THRESH_BINARY)
    #显示图像
    cv2.imshow('original',img)
    cv2.imshow('threshold',threshold)
    cv2.imshow('gray_threshold',threshold1)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

     效果:由上到下依次是:原图、彩色图像阈值分割、灰度图像阈值分割

    2、使用adaptivethreshold方法进行阈值分割,该方法使用高斯函数,统计一个小块内的图像信息进行自适应阈值操作。

    # -*- coding:utf-8 -*-
    
    
    # opencv中自适应阈值操作
    
    import cv2
    import numpy
    
    #读取一张图片
    img = cv2.imread('bookback.jpg',cv2.IMREAD_COLOR)
    #转换为灰度图像
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    #使用自适应阈值处理,源图片,最大值,阈值类型,二值化类型,分块大小,阈值计算中常数
    adaptive_thresh = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,115,1)
    
    #显示图片
    cv2.imshow('original',img)
    cv2.imshow('adaptive_thresh',adaptive_thresh)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

     效果:由上到下依次是:原图、阈值分割后图像

    3、使用otsu方法进行分割,该方法基于直方图统计,通过一个阈值将直方图分为两个部分。

    #基于直方图的二值化
    ret,thresh = cv2.threshold(gray,40,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
    

     效果如下:

  • 相关阅读:
    defineProperty的使用
    js题库全集
    如何将多个文件夹中的文件合并到一个文件夹中
    CYQ.Data V5 MDataTable 专属篇介绍
    读取和写入配置文件内容的方法
    面对代码中过多的if...else的解决方法
    SQL语句--删除掉重复项只保留一条
    获取当前时间
    Stopwatch 类用于计算程序运行时间
    正则表达式手册
  • 原文地址:https://www.cnblogs.com/lw77/p/11965955.html
Copyright © 2011-2022 走看看