Learning OpenCV cvAdaptiveThreshold 自适应阈值



原文:http://blog.csdn.net/full_speed_turbo/article/details/41311887

一、函数定义:

  1. void cvAdaptiveThreshold(  
  2.     CvArr* src,//输入图像  
  3.     CvArr* dst,//输出图像  
  4.     double max_val,//最大值  
  5.     int adaptive_method=CV_ADAPTIVE_THRESH_MEAN_C,//自适应阈值方法  
  6.     int threshold_type=CV_THRESH_BINARY,//阈值类型  
  7.     int block_size=3,//邻域大小  
  8.     double param1=5//偏移量  
  9.     );  
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 高斯加权平均

二、例程:

  1. //WIN7+VS2012+OPENCV2.4.7  
  2. //void cvAdaptiveThreshold(  
  3. //  CvArr* src,//输入图像  
  4. //  CvArr* dst,//输出图像  
  5. //  double max_val,//最大值  
  6. //  int adaptive_method=CV_ADAPTIVE_THRESH_MEAN_C,//自适应阈值方法  
  7. //  int threshold_type=CV_THRESH_BINARY,//阈值类型  
  8. //  int block_size=3,//邻域大小  
  9. //  double param1=5//偏移量  
  10. //  );  
  11. #include<cv.h>  
  12. #include<highgui.h>  
  13. #include<stdio.h>  
  14. int main(int argc,char** argv)  
  15. {  
  16.     cvNamedWindow("threshold",1);  
  17.     cvNamedWindow("threshold_adp_mean",1);  
  18.     cvNamedWindow("threshold_adp_gaussian",1);  
  19.     //  
  20.     IplImage* src=cvLoadImage(argv[1],0);  
  21.     cvNamedWindow("source");  
  22.     cvShowImage("source",src);  
  23.     IplImage* dst=cvCreateImage(cvGetSize(src),src->depth,1);  
  24.     IplImage* dst_adp=cvCreateImage(cvGetSize(src),src->depth,1);  
  25.     //  
  26.     cvThreshold(src,dst,100,100,CV_THRESH_BINARY);  
  27.     cvShowImage("threshold",dst);  
  28.     cvAdaptiveThreshold(src,dst_adp,100,  
  29.         CV_ADAPTIVE_THRESH_MEAN_C);  
  30.     cvShowImage("threshold_adp_mean",dst_adp);  
  31.     cvAdaptiveThreshold(src,dst_adp,100,  
  32.         CV_ADAPTIVE_THRESH_GAUSSIAN_C);  
  33.     cvShowImage("threshold_adp_gaussian",dst_adp);  
  34.     // free  
  35.     cvWaitKey(0);  
  36.     cvDestroyAllWindows();  
  37.     cvReleaseImage(&src);  
  38.     cvReleaseImage(&dst);  
  39.     return 0;  
  40. }  
//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;
}

三、运行结果


原图像灰度化固定阈值
高斯阈值平均阈值


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值