• 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)
    

     效果如下:

  • 相关阅读:
    表单制作注意事项
    【学习笔记】SIFT尺度不变特征 (配合UCF-CRCV课程视频)
    【图片匹配】--- SIFT_Opencv3.1.0_C++_ubuntu
    【LeetCode】297. Serialize and Deserialize Binary Tree
    【LeetCode】树的遍历
    【LeetCode 33】Search in Rotated Sorted Array
    ubuntu14.04 + GTX980ti + cuda 8.0 ---Opencv3.1.0(基础+opecv_contrib)配置
    [完美方案+无懈可击]ubuntu 14.04(LTS) + GTX 980Ti显卡配置
    OpenCV2.4.9 + Ubuntu15.04配置
    每天学点linux命令之locate 与 find 命令
  • 原文地址:https://www.cnblogs.com/lw77/p/11965955.html
Copyright © 2020-2023  润新知