边缘检测的一般步骤
Canny边缘检测的步骤
Canny函数
例程
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/video.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src = imread("700levi.jpg");
Mat src1 = src.clone();
//显示原始图
imshow("原始图", src);
//转成灰度图, 降噪, 用canny, 最后将得到的边缘作为掩码, 拷贝原图到效果图上, 得到彩色的边缘图
Mat dst, edge, gray;
//1.创建与src同类型和大小的矩阵
dst.create(src.size(), src.type());
//2.将原图转换为灰度图像
cvtColor(src1, gray, COLOR_RGB2GRAY);
//3.先使用3x3 内核来降噪
blur(gray, edge, Size(3, 3));
//4.运行canny算子
Canny(edge, edge, 3, 9, 3);
//5.将g_dstImage内所有元素设置为0
dst = Scalar::all(0);
//6.使用Canny算子输出的边缘图edge作为掩码, 将原图src拷贝到目标图dst中
src1.copyTo(dst, edge);
//7.显示效果图
imshow("灰度图边缘检测", edge);
imshow("彩色图边缘效果图", dst);
waitKey(0);
return 0;
}
效果
文章出处登录后可见!
已经登录?立即刷新