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)
    

     效果如下:

  • 相关阅读:
    玄学最短路算法——Ex Floyd
    题解 CF785E 【Anton and Permutation】
    题解 P1825 【[USACO11OPEN]玉米田迷宫Corn Maze】
    实现非递归树链剖分
    题解 P3423 【[POI2005]BAN-Bank Notes】
    题解 P3871 【[TJOI2010]中位数】
    【带修改的主席树】理解题解 (P2617 【Dynamic Rankings】题解)
    快速计算高精乘低精---低精优化高精
    了解 yaml文件格式
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'test.ac_flight' doesn't exist
  • 原文地址:https://www.cnblogs.com/lw77/p/11965955.html
Copyright © 2011-2022 走看看