OpenCV图像自适应阈值二值化及图像平滑处理
1、首先安装好Opencv库,OpenCV 下载链接https://opencv.org/。vs下新建工程,win32控制台程序,在工程中把OpenCV环境配置好,即将头文件目录和动态库目录包含上,以及包含相应的库文件。


2、工程里包含相应的头文件、命名空间等。
//OpenCV图形处理头文件
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\types_c.h>
#include <opencv2/core/core_c.h>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv\cxcore.h>
#include <opencv\cv.h>
#include <opencv2/core/types.hpp>
#include <opencv2/core/types_c.h>
using namespace std;
using namespace cv;
3、将以下代码复制到工程里,即可。
//:::::::::::::::::::::;图像的二值化:::::::::::::::::::::::::::://
//缩放图像
double fScale = 1; //缩放倍数0.214
CvSize czSize; //目标图像尺寸CV_LOAD_IMAGE_UNCHANGED
// 从文件中加载原图
IplImage *pSrcImage = cvLoadImage("..\\TestPictureData\\15.jpg", CV_LOAD_IMAGE_GRAYSCALE);
IplImage *pDstImage = NULL;
//计算目标图像大小
czSize.width = pSrcImage->width * fScale;
czSize.height = pSrcImage->height * fScale;
//创建图像并缩放
pDstImage = cvCreateImage(czSize, pSrcImage->depth, pSrcImage->nChannels);
cvResize(pSrcImage, pDstImage, CV_INTER_AREA);
// 创建二值图
g_pBinaryImage = cvCreateImage(cvGetSize(pDstImage), pSrcImage->depth, pSrcImage->nChannels);
// 转为二值图
cvThreshold(pDstImage, g_pBinaryImage,0,255,CV_THRESH_OTSU);//使用OTSU自动寻找二值化阈值
//保存图片
cvSaveImage("..\\TestPictureData\\sxt15.jpg", pDstImage);
cvSaveImage("..\\TestPictureData\\BI15.jpg", g_pBinaryImage);
//二值图像平滑处理,包括其中的多种滤波方法
IplImage *g_pBinaryImage1 = cvCreateImage(cvGetSize(pDstImage), pSrcImage->depth, pSrcImage->nChannels);
cvSmooth(g_pBinaryImage,g_pBinaryImage1,CV_MEDIAN,3,3,0,0);
//中值滤波CV_MEDIAN,高斯滤波CV_GAUSSIAN,领域平均滤波CV_BLUR
cvSaveImage("..\\TestPictureData\\BI15-1.jpg",g_pBinaryImage1);
// 显示原图
cvNamedWindow("原图", CV_WINDOW_AUTOSIZE);
cvShowImage("原图", pDstImage);
// 创建二值图窗口
cvNamedWindow("二值图", CV_WINDOW_AUTOSIZE);
// 显示二值图
cvShowImage("二值图", g_pBinaryImage1);
cvWaitKey(0);
cvDestroyWindow("原图");
//cvDestroyWindow(pstrWindowsSrcTitle);
cvDestroyWindow("二值图");
//cvReleaseImage(&pSrcImage);
// cvReleaseImage(&contoursImage);
cvReleaseImage(&g_pBinaryImage1);
cvReleaseImage(&pDstImage);

