OpenCV开放源代码计算机视觉类库
VS2010
工程里包含相应的头文件、命名空间等。//OpenCV图形处理头文件#include
将以下代码复制到工程里,即可。//:::::::::::::::::::::;图像的二值化::::::::::::::::::::::::::::// //缩放图像 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);
OpenCV二值化图像,函数cvThreshold传入的是灰度图,否则将出错,这里在加载图像时可选择以灰度图加载IplImage *pSrcImage = cvLoadImage('..\\TestPictureData\\15.jpg', CV_LOAD_IMAGE_GRAYSCALE);