opencv法制化函数cvThreshold的使用

opencv法制化函数cvThreshold的使用

cvThreshold只能用于处理单通道图像,因此在处理前应先对图像进行分割,然后进行处理,再把处理后的图像进行合并。cvThreshold有很多阀值处理的方法,其中使用最多的是CV_THRESH_TRUNC,称为截断阀值化,即当像素值大于阀值时,将像素截断为最大值,否则保持不变。具体看下面例子:

#include<cv.h>

#include<highgui.h>

#include<stdio.h>

 

int main(int argc,char *argv[])

{

IplImage *src = cvLoadImage(argv[1]);

IplImage *dst = cvCreateImage(cvGetSize(src),src->depth,src->nChannels);

IplImage *r = cvCreateImage(cvGetSize(src),src->depth,1);

IplImage *g = cvCreateImage(cvGetSize(src),src->depth,1);

IplImage *b = cvCreateImage(cvGetSize(src),src->depth,1);

 

cvNamedWindow("Raw");

cvNamedWindow("Convert");

 

cvSplit(src,r,g,b,NULL);//分割成单通道

cvThreshold(r,r,150,150,CV_THRESH_TRUNC);//进行法制化处理

cvThreshold(g,g,150,150,CV_THRESH_TRUNC);

cvThreshold(b,b,150,150,CV_THRESH_TRUNC);

cvMerge(r,g,b,NULL,dst);//合并成三通道

 

cvShowImage("Raw",src);

cvShowImage("Convert",dst);

cvWaitKey(0);

 

cvReleaseImage(&src);

cvReleaseImage(&r);

cvReleaseImage(&g);

cvReleaseImage(&b);

cvReleaseImage(&dst);

cvDestroyWindow("Raw");

cvDestroyWindow("Convert");

 

return 0;

}

运行结果如下:

阀值前:

opencv法制化函数cvThreshold的使用_第1张图片

阀值后:

opencv法制化函数cvThreshold的使用_第2张图片

你可能感兴趣的:(opencv法制化函数cvThreshold的使用)