20 - Canny边缘检测
代码 及 理解注释:
#include;
#include;
using namespace cv;
using namespace std;
Mat source1,source1_Gray,change1;
int tl_value = 50;
int max_value = 255;
const char* OUTPUT_TITLE = "Canny Result";
void Canny_Demo(int,void*);
int main(int argc, char* argv) { // 20 - Canny边缘检测
source1 = imread("F:\\OpenCV-Test\\TestPicture\\SourcePicture1\\1.PNG");
if (!source1.data) { printf("can not load image ... \n"); return -1; }
imshow("source1", source1);
imshow(OUTPUT_TITLE,source1);
createTrackbar("Threshold Value:",OUTPUT_TITLE,&tl_value,max_value,Canny_Demo);
Canny_Demo(0,0);
waitKey(0);
return 0;
}
void Canny_Demo(int, void*) {
cvtColor(source1, source1_Gray, 6);
blur(source1_Gray, source1_Gray,Size(3,3),Point(-1,-1),BORDER_DEFAULT);
Canny(source1_Gray,change1,tl_value,tl_value*2,3,false); // Canny边缘检测
//(输入图像,输出图像,阈值1,阈值2,卷积核,是否采用更精确方式计算图像梯度)
// 阈值1:低于1的像素点不是边缘
// 阈值2:高于2的像素点不是边缘
// 在 阈值1和阈值2之间 是边缘
imshow(OUTPUT_TITLE,change1);
}
代码演示效果:
作者:奥瑞起源