Learing OpenCV cvThreshold

来源:互联网 发布:模考软件 编辑:程序博客网 时间:2024/05/17 03:15

阈值处理:

一、函数定义:

double cvThreshold(CvArr* src,//输入图像CvArr* dst,//输出图像double threshold,//阈值double max_value,//最大值int threshold_type//阈值类型);

阈值类型:                        操作

CV_THRESH_BINARY dst=(src>T)?M:0

CV_THRESH_BINARY_INV dst=(src>T)?0:M

CV_THRESH_TRUNC dst=(src>T)?M:src

CV_THRESH_TOZERO dst=(src>T)?src:0

CV_THRESH_TOZERO_INV dst=(src>T)?0:src

二、例程

//WIN7+VS2012+OPENCV2.4.7//cvThreshold//double cvThreshold(//CvArr* src,//输入图像//CvArr* dst,//输出图像//double threshold,//阈值//double max_value,//最大值//int threshold_type//阈值类型//);#include<cv.h>#include<highgui.h>#include<stdio.h>void sum_rgb(IplImage* src,IplImage* dst){//IplImage* r=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);IplImage* g=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);IplImage* b=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);//cvSplit(src,r,g,b,NULL);//IplImage* s=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);//cvAddWeighted(r,1./3.,g,1./3.,0.0,s);cvAddWeighted(s,2./3.,b,1./3.,0.0,s);////cvThreshold(s,dst,100,100,CV_THRESH_TRUNC);//cvThreshold(s,dst,100,100,CV_THRESH_BINARY);//cvThreshold(s,dst,100,100,CV_THRESH_BINARY_INV);//cvThreshold(s,dst,100,100,CV_THRESH_TOZERO);cvThreshold(s,dst,100,100,CV_THRESH_TOZERO_INV);cvReleaseImage(&r);cvReleaseImage(&g);cvReleaseImage(&b);cvReleaseImage(&s);}int main(int argc,char** argv){cvNamedWindow(argv[1],1);//IplImage* src=cvLoadImage(argv[1]);IplImage* dst=cvCreateImage(cvGetSize(src),src->depth,1);sum_rgb(src,dst);cvShowImage(argv[1],dst);cvWaitKey(0);cvDestroyWindow(argv[1]);cvReleaseImage(&src);cvReleaseImage(&dst);return 0;}

三、运行结果:

输入图像:


CV_THRESH_TRUNC


CV_THRESH_BINARY


CV_THRESH_BINARY_INV


CV_THRESH_TOZERO 


CV_THRESH_TOZERO_INV





0 0
原创粉丝点击