openCV学习笔记(2):Canny边缘检测算法应用

初次学习openCV和数字图像处理,这是一个Canny边缘检测算法的应用例子,至于该算法的原理,百度百科就可以。

【图片已经在工程目录下,一定要放对图片的位置】

openCV学习笔记(2):Canny边缘检测算法应用_第1张图片


代码如下:

#include <opencv2\opencv.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;

//指向原始图像和处理后图像的指针
IplImage *OriginalImage,*CannyImage;
//原始图像窗口和后期窗口名字
const char *OriginalWindowsName = "Original Image-code 陈";
const char *CannyWindowsName = "Canny Image-code 陈";
//trackbar回调函数,当trackbar滑条值发生改变时就会触发该函数
void on_trackbar(int Threshold)
{
    cvCanny(OriginalImage,CannyImage,Threshold,Threshold*3,3);
	cvShowImage(CannyWindowsName,CannyImage);
}
int main()
{
	//cout<<CV_VERSION;
/*  Mat img = imread("Oldsumpalace.jpg");
    if(img.empty())
{
        cout<<"error";
        return -1;
	}
    imshow("圆明园",img);
    waitKey();*/
 
	//
	  //图像(彩色)
	char *OriginalImageName = "Oldsumpalace.jpg";
	char *WindowsToolBar = "Threshold";
	//原始图像(0:灰度图)
	OriginalImage = cvLoadImage(OriginalImageName,0);
	CannyImage = cvCreateImage(cvGetSize(OriginalImage),IPL_DEPTH_8U,1);
        //创建显示原图的窗口
	cvNamedWindow(OriginalWindowsName,1);
	//创建显示处理后图像的窗口
	cvNamedWindow(CannyWindowsName,1);
	//创建滑条
	int ThresholdEdge =1;
	cvCreateTrackbar(WindowsToolBar,CannyWindowsName,&ThresholdEdge,100,on_trackbar);
	 //显示原始图像(灰度图) 
	cvShowImage(OriginalWindowsName,OriginalImage);
	on_trackbar(1);

	cvWaitKey();
	//销毁窗口
	cvDestroyWindow(OriginalWindowsName);
	cvDestroyWindow(CannyWindowsName);
	//释放图像
	cvReleaseImage(&OriginalImage);
	cvReleaseImage(&CannyImage);


	return 0;
}


运行后的效果:

原图【灰度图】

openCV学习笔记(2):Canny边缘检测算法应用_第2张图片

Canny算法执行后:

阀值= 1时

openCV学习笔记(2):Canny边缘检测算法应用_第3张图片

阀值= 50时

openCV学习笔记(2):Canny边缘检测算法应用_第4张图片

阀值= 100时

openCV学习笔记(2):Canny边缘检测算法应用_第5张图片


你可能感兴趣的:(opencv,边缘检测,canny算子)