canny边沿检测2

来源:互联网 发布:发卡平台源码免签约 编辑:程序博客网 时间:2024/04/29 03:10
#include "cv.h"#include "highgui.h"char wndname[] = "Edge";char tbarname[] = "Threshold";int edge_thresh = 1;IplImage *image = 0, *cedge = 0, *gray = 0, *edge = 0;// 定义跟踪条的 callback 函数void on_trackbar(int h){cvSmooth( gray, edge, CV_BLUR, 3, 3, 0 );//////////////////////////////////////////////////////////////cvNot( gray, edge );////////////////////////////////////////////////////////////////////////////// 对灰度图像进行边缘检测cvCanny(gray, edge, (float)edge_thresh, (float)edge_thresh*3, 3);cvZero( cedge );// copy edge pointscvCopy( image,cedge,edge );//掩码到彩色图像上,没这句话就是灰度图像// 显示图像cvShowImage(wndname, cedge);}int main( int argc, char** argv ){image = cvLoadImage("f:\\vc\\cv\\adc.jpg", 1);// Create the output imagecedge = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 3);// 将彩色图像转换为灰度图像gray = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);edge = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);cvCvtColor(image, gray, CV_BGR2GRAY);// Create a windowcvNamedWindow(wndname, 1);// create a toolbar cvCreateTrackbar(tbarname, wndname, &edge_thresh, 100, on_trackbar); //需要手动触发// Show the imageon_trackbar(0);// Wait for a key stroke; the same function arranges events processingcvWaitKey(0);cvReleaseImage(&image);cvReleaseImage(&gray);cvReleaseImage(&edge);cvDestroyWindow(wndname);return 0;}

0 0