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

opencv 边缘检测 Contours 算法

2015-09-02 13:43 387 查看
cvNamedWindow("box", 0);

IplImage* img_8uc1 = cvLoadImage("C:\\Users\\Administrator\\Desktop\\159.jpg", CV_LOAD_IMAGE_GRAYSCALE);

IplImage* img_edge = cvCreateImage(cvGetSize(img_8uc1), 8, 1);

IplImage* img_8uc3 = cvCreateImage(cvGetSize(img_8uc1), 8, 3);

cvThreshold(img_8uc1, img_edge, 128, 255, CV_THRESH_BINARY);

CvMemStorage* storage = cvCreateMemStorage();

CvSeq* first_contours = NULL;

int NC = cvFindContours(

img_edge,

storage,

&first_contours,

sizeof(CvContour),

CV_RETR_LIST

);

int n = 0;

printf("Total Contours Deleted:%d\n", NC);

for (CvSeq* c = first_contours; c != NULL; c = c->h_next)

{

cvCvtColor(img_8uc1, img_8uc3, CV_GRAY2BGR);

cvDrawContours(

img_8uc3,

c,

cvScalarAll(255),

cvScalarAll(255),

100

);

cvShowImage("box", img_8uc3);

for (int i = 0; i < c->total; ++i)

{

CvPoint* p = CV_GET_SEQ_ELEM(CvPoint, c, i);

}

cvWaitKey(0);

n++;

}

cvCvtColor(img_8uc1, img_8uc3, CV_GRAY2BGR);

cvShowImage("box", img_8uc3);

cvNamedWindow("src", 0);

cvShowImage("src", img_8uc1);

cvNamedWindow("edge", 0);

cvShowImage("edge", img_edge);

cvWaitKey(0);

cvDestroyAllWindows();

cvReleaseImage(&img_8uc1);

cvReleaseImage(&img_8uc3);

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