加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

初学opencv-单一阈值与自适应阈值

发布时间:2020-12-14 02:15:00 所属栏目:百科 来源:网络整理
导读:#includestdio.h#includecv.h#includehighgui.h#include "math.h"IplImage *Igray=0,*It=0,*Iat;//cvAdaptiveThreshold(src,dst,max_val,adaptive_method,threshold_type,block_size,param1)//上述方法有两种不同的自适应阈值方法,通过参数adaptive_method
#include<stdio.h>
#include<cv.h>
#include<highgui.h>
#include "math.h"
IplImage *Igray=0,*It=0,*Iat;
//cvAdaptiveThreshold(src,dst,max_val,adaptive_method,threshold_type,block_size,param1)
//上述方法有两种不同的自适应阈值方法,通过参数adaptive_method设定
//上述方法是计算像素点周围block_size*block_size区域的加权平均,然后减去常数param1得到
int main(int argc,char**argv){
	if(argc!=7)return -1;
	double threshold=(double)atof(argv[1]);//设定阈值
	int threshold_type=atoi(argv[2])?CV_THRESH_BINARY:CV_THRESH_BINARY_INV;//设置阈值类型
	int adaptive_method=atoi(argv[3])?CV_ADAPTIVE_THRESH_MEAN_C:CV_ADAPTIVE_THRESH_GAUSSIAN_C;//通过变量设置自适应阈值
	int block_size=atoi(argv[4]);
	double offset=(double)atof(argv[5]);

	if((Igray=cvLoadImage(argv[6],CV_LOAD_IMAGE_GRAYSCALE))==0){return -1;}//通过在dos命令下输入图像的位置来加载图像

	It=cvCreateImage(cvSize(Igray->width,Igray->height),IPL_DEPTH_8U,1);
	Iat=cvCreateImage(cvSize(Igray->width,1);

	cvThreshold(Igray,It,threshold,255,threshold_type);
	//自适应阈值化,改进了cvThreshold()
	cvAdaptiveThreshold(Igray,Iat,offset);
	cvNamedWindow("raw",1);
	cvNamedWindow("Threshold",1);
	cvNamedWindow("AdaptiveThreshold",1);

	cvShowImage("raw",Igray);
	cvShowImage("Threshold",It);
	cvShowImage("AdaptiveThreshold",Iat);
	cvWaitKey(0);
	cvReleaseImage(&Igray);
cvReleaseImage(&It);
cvReleaseImage(&Iat);
cvDestroyAllWindows();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读