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

OpenCV中文网站例程——轮廓检测(能检测任意输入图像的轮廓)

2014-03-28 22:12 531 查看
本文参考以下帖子http://blog.csdn.net/MoreWindows

对输入的任意彩图进行轮廓提取,通过调整二值化的阈值来改善轮廓的清晰度

效果如图:



代码如下:

//图像轮廓检测上

//参考MoreWindows (http://blog.csdn.net/MoreWindows)

//输入一任意的图像,通过控制阈值(如下面的100)来改善二值化效果,将彩图提取轮廓

#include"cv.h"

#include"cxcore.h"

#include"highgui.h"

using namespace std;

int main( int argc, char** argv )

{

const char *pstrWindowsSrcTitle = "原图";

const char *pstrWindowsOutLineTitle = "轮廓图";

//创建图像

IplImage *pSrcImage =NULL;

pSrcImage = cvLoadImage( "E:\\Lena.jpg", 1);

// 显示原图

cvNamedWindow(pstrWindowsSrcTitle, CV_WINDOW_AUTOSIZE);

cvShowImage(pstrWindowsSrcTitle, pSrcImage);

// 转换为灰度图

IplImage *pGrayImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 1);

cvCvtColor(pSrcImage, pGrayImage, CV_BGR2GRAY);

// 转换为二值图

IplImage *pBinaryImage = cvCreateImage(cvGetSize(pGrayImage), IPL_DEPTH_8U, 1);

cvThreshold(pGrayImage, pBinaryImage, 100, 255, CV_THRESH_BINARY); //当前者输入数组大于阈值100时,输出数组为255,否则输出数组为0;二值化

// 检索轮廓并返回检测到的轮廓的个数

CvMemStorage *pcvMStorage = cvCreateMemStorage(0);

CvSeq *pcvSeq = NULL;

cvFindContours(pBinaryImage, pcvMStorage, &pcvSeq, sizeof(CvContour), CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cvPoint(0, 0));//参数1为二值图像,参数2为存储容器

// 画轮廓图

IplImage *pOutlineImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 3);

int nLevels = 5;

// 填充成白色

cvRectangle(pOutlineImage, cvPoint(0, 0), cvPoint(pOutlineImage->width, pOutlineImage->height), CV_RGB(255, 255, 255), CV_FILLED);

cvDrawContours(pOutlineImage, pcvSeq, CV_RGB(255,0,0), CV_RGB(0,255,0), nLevels, 2);

// 显示轮廓图

cvNamedWindow(pstrWindowsOutLineTitle, CV_WINDOW_AUTOSIZE);

cvShowImage(pstrWindowsOutLineTitle, pOutlineImage);

cvReleaseMemStorage(&pcvMStorage);

cvWaitKey(0);

cvDestroyWindow(pstrWindowsSrcTitle);

cvDestroyWindow(pstrWindowsOutLineTitle);

cvReleaseImage(&pSrcImage);

cvReleaseImage(&pGrayImage);

cvReleaseImage(&pBinaryImage);

cvReleaseImage(&pOutlineImage);

return 0;

}

输入图像换做规整的几何图时效果如下:(注:此时二值化阈值的100改为250)

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