OpenCV图像自适应阈值二值化及图像平滑处理

2025-11-18 04:18:24

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

OpenCV图像自适应阈值二值化及图像平滑处理

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);

OpenCV图像自适应阈值二值化及图像平滑处理

OpenCV图像自适应阈值二值化及图像平滑处理

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢