一些基本的opencv图像预处理函数直接用法(灰度化,otsu二值化,腐蚀膨胀,canny)



#include
#include
#include
 
using namespace std;  
using namespace cv;  
int main(int argc, char** argv)
{
const char* filename = "YinZhang\\0004.jpg";
IplImage * pSrcImg=NULL;
IplImage * pGrayImg = NULL;
IplImage * pOtsu = NULL;
IplImage * erode =NULL;
IplImage * dilate = NULL;
IplImage * pCanny=NULL;
int threshold=1;
pSrcImg = cvLoadImage(filename,1);
pGrayImg = cvCreateImage(cvGetSize(pSrcImg),IPL_DEPTH_8U,1);
pOtsu= cvCreateImage(cvGetSize(pSrcImg),IPL_DEPTH_8U,1);
pCanny=cvCreateImage(cvGetSize(pSrcImg),IPL_DEPTH_8U,1);


erode = cvCreateImage(cvGetSize(pSrcImg), 8, 1);  
dilate = cvCreateImage(cvGetSize(pSrcImg), 8, 1);  


cvCvtColor(pSrcImg, pGrayImg, COLOR_BGR2GRAY);//图像灰度化  
cvThreshold(pGrayImg, pOtsu, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);//大津法  
cvDilate(pOtsu,dilate, NULL,1); //膨胀 
cvErode( dilate,erode, NULL,3); //腐蚀  (先膨胀后腐蚀为闭运算)
cvCanny(pOtsu, pCanny, threshold, threshold * 3, 3);  //canny算子边缘检测




cvNamedWindow( "grayImg", 1 );
cvShowImage( "grayImg", pGrayImg );
cvNamedWindow( "otuImg", 1 );
cvShowImage( "otuImg", pOtsu);
cvNamedWindow("canny",1);
cvShowImage("canny", pCanny);  


//cvNamedWindow("Dilate",1);
//cvShowImage ("Dilate",dilate);
//cvNamedWindow( "erode",1);
//cvShowImage ("erode",erode);
cvWaitKey(0);
return 0;
}

你可能感兴趣的:(一些基本的opencv图像预处理函数直接用法(灰度化,otsu二值化,腐蚀膨胀,canny))