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;
}
三、运行结果
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;
}
三、运行结果
原图像灰度化 | 固定阈值 |
高斯阈值 | 平均阈值 |
相关文章推荐
- Learning OpenCV cvAdaptiveThreshold 自适应阈值
- 自适应阈值 cvAdaptiveThreshold
- 【OpenCV3】阈值化操作——cv::threshold()与cv::adaptiveThreshold()详解
- OpenCV—固定阈值门限分割cv::threshold
- Opencv图像识别从零到精通(15)-----阈值分割、固定阈值Threshold、自适应阈值分割adaptiveThreshold、OSTU大津法
- cvAdaptiveThreshold用法(opencv参考手册)
- opencv自适应阈值
- OpenCV基于局部自适应阈值的图像二值化
- openCV threshold 阈值
- cvAdaptiveThreshold获取了物体的边缘,而非二值化
- 在OpenCV中自适应确定canny算法的分割阈值
- 有关opencv的学习(14)—使用自适应阈值处理图像
- opencv 学习之 阈值化<2> 自适应阈值
- opencv: 阈值处理(cv2.threshold) 探究(图示+源码)
- cvAdaptiveThreshold和cvThreshold的一些讨论
- [转载+原创]Emgu CV on C# (五) —— Emgu CV on 局部自适应阈值二值化
- Learning OpenCV:cvCvtColor and cvCanny
- opencv for python (11) 图像阈值 及自适应阈值
- opencv函数系列--自适应阈值
- (学习笔记)threshold —— opencv阈值操作