边缘检测

来源:互联网 发布:数据挖掘系统的构建 编辑:程序博客网 时间:2024/04/28 14:20

#include "highgui.h"
#include "cv.h"
#include <iostream>
#include <iomanip>

using namespace std;

IplImage* img = 0, *cedge = 0, *gray = 0, *edge = 0;
int edge_value = 0;
void on_trackbar(int h)
{
 cvSmooth(gray,edge,CV_BLUR,3,3,0);
 cvNot(gray,edge);

 cvCanny(gray,edge,(float)edge_value,(float)edge_value*3, 3);

 cvZero(cedge);
 cvCopy(img, cedge, edge);

 cvShowImage("Candy",cedge);

}
int main()
{
 img = cvLoadImage("lena.jpg");
 cedge = cvCreateImage(cvSize(img->width,img->height),IPL_DEPTH_8U,3);

 gray = cvCreateImage(cvSize(img->width,img->height),IPL_DEPTH_8U,1);
 edge = cvCreateImage(cvSize(img->width,img->height),IPL_DEPTH_8U,1);

 cvCvtColor(img,gray,CV_BGR2GRAY);

 cvNamedWindow("Candy",1);

 cvCreateTrackbar("Threshold","Candy",&edge_value,100,on_trackbar);

 on_trackbar(0);

 cvWaitKey(0);
 cvReleaseImage(&img);
 cvReleaseImage(&gray);
 cvReleaseImage(&edge);
 cvDestroyAllWindows();
}