您的位置:首页 > 运维架构

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

2016-04-13 17:24 537 查看
#include <cv.h>

#include <cxcore.h>

#include <highgui.h>

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: