利用OpenCV实现图像的阈值分割

原创 2012年03月26日 09:18:51
对lena、baboon图像进行阈值分割,像素大于100的被赋值为255,小于100被赋为0.

    #include <stdio.h>
    #include <cv.h>
    #include <highgui.h>
    void sum_rgb( IplImage* src, IplImage* dst ) {
    // Allocate individual image planes.
    IplImage* r = cvCreateImage( cvGetSize(src), IPL_DEPTH_8U, 1 );
    IplImage* g = cvCreateImage( cvGetSize(src), IPL_DEPTH_8U, 1 );
    IplImage* b = cvCreateImage( cvGetSize(src), IPL_DEPTH_8U, 1 );
    // Temporary storage.
    IplImage* s = cvCreateImage( cvGetSize(src), IPL_DEPTH_8U, 1 );
    // Split image onto the color planes.
    cvSplit( src, r, g, b, NULL );
    // Add equally weighted rgb values.
    cvAddWeighted( r, 1./3., g, 1./3., 0.0, s );
    cvAddWeighted( s, 2./3., b, 1./3., 0.0, s );
    // Truncate values above 100.
    cvThreshold( s, dst, 100, 255, CV_THRESH_BINARY );
    cvReleaseImage( &r );
    cvReleaseImage( &g );
    cvReleaseImage( &b );
    cvReleaseImage( &s );
    }
    int main(int argc, char** argv)
    {
    // Create a named window with a the name of the file.
    cvNamedWindow( argv[1], 1 );
    // Load the image from the given file name.
    IplImage* src = cvLoadImage( argv[1] );
    IplImage* dst = cvCreateImage( cvGetSize(src), src->depth, 1);
    sum_rgb( src, dst);
    // Show the image in the named window
    cvShowImage( argv[1], dst );
    // Idle until the user hits the "Esc" key.
    while( 1 ) { if( (cvWaitKey( 10 )&0x7f) == 27 ) break; }
    // Clean up and don’t be piggies
    cvDestroyWindow( argv[1] );
    cvReleaseImage( &src );
    cvReleaseImage( &dst );
    return 0;

    }




相关文章推荐

otsu结合OpenCV实现灰度图像自动阈值处理

简单的说,这种算法假设一副图像由前景色和背景色组成,通过统计学的方法来选取一个阈值,使得这个阈值可以将前景色和背景色尽可能的分开。 或者更准确的说是在某种判据下最优。与数理统计领域的 fisher 线...

转:otsu自适应阈值分割的算法描述和opencv实现,及其在肤色检测中的应用

  otsu自适应阈值分割的算法描述和opencv实现,及其在肤色检测中的应用 otsu算法选择使类间方差最大的灰度值为阈值,具有很好的效果算法具体描述见otsu论文,或冈萨雷斯著名的数字图像处理那本...
  • kingx89
  • kingx89
  • 2011年03月26日 00:39
  • 974

二维最大熵阈值分割原理与opencv实现

二维最大熵原理   近期在做图像处理灰阶分割的研究,发现网上有很多将一维最大熵阈值分割的文章与程序代码,但是二维最大熵的资源相对较小。故本博客的目的就在于此,在学习的过程中记录相关笔记,以便帮助后面...

opencv实现c++的otsu自适应阈值分割的算法描述

otsu算法选择使类间方差最大的灰度值为阈值,具有很好的效果 算法具体描述见otsu论文,或冈萨雷斯著名的数字图像处理那本书 这里给出程序流程: 1、计算直方图并归一化histogram 2、...
  • YFEI69
  • YFEI69
  • 2014年03月24日 10:42
  • 1079

python+opencv实现阈值分割

最近老师留了几个作业,虽然用opencv很简单一句话就出来了,但是还没用python写过。在官方文档中的tutorial中的threshold里,看到可以创建两个滑动条来选择type和value,决定...

利用最大熵进行阈值分割从而实现灰度图像的二值化的原理概要及OpenCV代码

详细的数学原理目前我也没搞明白,所以只说下原理概要: 图像进行二值化的过程中,显然是需要一个阈值的,这个阈值取多少?前面已经有一种通过像素领域动态确定每个像点点阈值的方法 详情可见我的博文http:/...

opencv实现图像分割,分离前景和背景(1)

简介   如题,本篇就是讲解和使用opencv函数grabcut,来实现图像前景与背景的分离。 函数原型   1、opencv官方介绍:opencv官方grabcut介绍   2、网上童鞋翻译解释:...

opencv实现图像分割,分离前景和背景(2)

简介   如题,本篇是在前一篇的基础上进一步讲解的第三个图像背景分离例子。 实例介绍   这个例子是在上一个加入鼠标操作实例的进一步操作。   本例:可以在鼠标选框完成之后,1、通过shift+鼠...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用OpenCV实现图像的阈值分割
举报原因:
原因补充:

(最多只允许输入30个字)