Learning OpenCV cvAdaptiveThreshold 自适应阈值

一、函数定义:

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;
}

三、运行结果


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


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值