zoukankan      html  css  js  c++  java
  • OpenCV中threshold函数的使用

    转自:https://blog.csdn.net/u012566751/article/details/77046445

    一篇很好的介绍threshold文章;

    图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。OpenCV中提供了函数cv::threshold();
     
    注意:作者采用OpenCV 3.0.0
     
    函数原型
     
    参数说明
    src:源图像,可以为8位的灰度图,也可以为32位的彩色图像。(两者由区别)
    dst:输出图像
    thresh:阈值
    maxval:dst图像中最大值
    type:阈值类型,可以具体类型如下:
    编号 阈值类型枚举
    注意
    1 THRESH_BINARY  
    2 THRESH_BINARY_INV  
    3 THRESH_TRUNC  
    4 THRESH_TOZERO  
    5 THRESH_TOZERO_INV  
    6 THRESH_MASK
    不支持
    7 THRESH_OTSU
    不支持32位
    8 THRESH_TRIANGLE
    不支持32位
    具体如下表
     
    生成关系如下表
     
     
    测试代码
    Mat gray;
        cvtColor(src, gray, CV_BGR2GRAY); 
        // 全局二值化
        int th = 100;
        cv::Mat threshold1,threshold2,threshold3,threshold4,threshold5,threshold6,threshold7,threshold8;
        cv::threshold(gray, threshold1, th, 255, THRESH_BINARY);
        cv::threshold(gray, threshold2, th, 255, THRESH_BINARY_INV);
        cv::threshold(gray, threshold3, th, 255, THRESH_TRUNC);
        cv::threshold(gray, threshold4, th, 255, THRESH_TOZERO);
        cv::threshold(gray, threshold5, th, 255, THRESH_TOZERO_INV);
        //cv::threshold(gray, threshold6, th, 255, THRESH_MASK);
        cv::threshold(gray, threshold7, th, 255, THRESH_OTSU);
        cv::threshold(gray, threshold8, th, 255, THRESH_TRIANGLE);
        cv::imshow("THRESH_BINARY", threshold1);
        cv::imshow("THRESH_BINARY_INV", threshold2);
        cv::imshow("THRESH_TRUNC", threshold3);
        cv::imshow("THRESH_TOZERO", threshold4);
        cv::imshow("THRESH_TOZERO_INV", threshold5);
        //cv::imshow("THRESH_MASK", threshold6);
        cv::imshow("THRESH_OTSU", threshold7);
        cv::imshow("THRESH_TRIANGLE", threshold8);
        cv::waitKey(0);
  • 相关阅读:
    POJ 2533 Longest Ordered Subsequence(裸LIS)
    HDU 1159 Common Subsequence(裸LCS)
    HDU 1160(两个值的LIS,需dfs输出路径)
    HDU 1260 Tickets (普通dp)
    HDU 2859 Phalanx(对称矩阵 经典dp样例)
    2018年暑假ACM个人训练题7 题解报告
    HDU 1060 Leftmost Digit(求N^N的第一位数字 log10的巧妙使用)
    HDU 1071 The area(求三个点确定的抛物线的面积,其中一个点是顶点)
    HDU 1077 Catching Fish(用单位圆尽可能围住多的点)
    HDU 1099 Lottery (求数学期望)
  • 原文地址:https://www.cnblogs.com/MCSFX/p/10563573.html
Copyright © 2011-2022 走看看