您的位置:首页 > 运维架构

Learning OpenCV cvAdaptiveThreshold 自适应阈值

2014-11-20 14:01 633 查看
一、函数定义:

void cvAdaptiveThreshold(
CvArr* src,//输入图像
CvArr* dst,//输出图像
double max_val,//最大值
int adaptive_method=CV_ADAPTIVE_THRESH_MEAN_C,//自适应阈值方法
int threshold_type=CV_THRESH_BINARY,//阈值类型
int block_size=3,//邻域大小
double param1=5//偏移量
);

自适应阈值方法adaptive_method:
CV_ADAPTIVE_THRESH_MEAN_C 加权平均

CV_ADAPTIVE_THRESH_GAUSSIAN_C 高斯加权平均

二、例程:

//WIN7+VS2012+OPENCV2.4.7
//void cvAdaptiveThreshold(
// CvArr* src,//输入图像
// CvArr* dst,//输出图像
// double max_val,//最大值
// int adaptive_method=CV_ADAPTIVE_THRESH_MEAN_C,//自适应阈值方法
// int threshold_type=CV_THRESH_BINARY,//阈值类型
// int block_size=3,//邻域大小
// double param1=5//偏移量
// );
#include<cv.h>
#include<highgui.h>
#include<stdio.h>
int main(int argc,char** argv)
{
cvNamedWindow("threshold",1);
cvNamedWindow("threshold_adp_mean",1);
cvNamedWindow("threshold_adp_gaussian",1);
//
IplImage* src=cvLoadImage(argv[1],0);
cvNamedWindow("source");
cvShowImage("source",src);
IplImage* dst=cvCreateImage(cvGetSize(src),src->depth,1);
IplImage* dst_adp=cvCreateImage(cvGetSize(src),src->depth,1);
//
cvThreshold(src,dst,100,100,CV_THRESH_BINARY);
cvShowImage("threshold",dst);
cvAdaptiveThreshold(src,dst_adp,100,
CV_ADAPTIVE_THRESH_MEAN_C);
cvShowImage("threshold_adp_mean",dst_adp);
cvAdaptiveThreshold(src,dst_adp,100,
CV_ADAPTIVE_THRESH_GAUSSIAN_C);
cvShowImage("threshold_adp_gaussian",dst_adp);
// free
cvWaitKey(0);
cvDestroyAllWindows();
cvReleaseImage(&src);
cvReleaseImage(&dst);
return 0;
}

三、运行结果

原图像灰度化固定阈值
高斯阈值平均阈值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: