zoukankan      html  css  js  c++  java
  • OpenCV——边缘检测入门、Canny边缘检测

    边缘检测的一般步骤:

    最优边缘检测的三个评价标准:

    低错误率:表示出尽可能多的实际边缘,同时尽可能地减少噪声产生的误报;

    高定位性:标识出的边缘要与图像实际边缘尽可能接近;

    最小响应:图像中的边缘只能标识一次,并且可能存在的图像噪声不应被标识为边缘。

    示例程序:

     1 #include <opencv2/opencv.hpp>
     2 #include <iostream>
     3 
     4 using namespace cv;
     5 using namespace std;
     6 
     7 //Canny边缘检测的一般过程:
     8 //转成灰度图
     9 //降噪
    10 //用Canny算子(此时已经得到了边缘)
    11 //将边缘作为掩码,拷贝原图到效果图上,得到彩色的边缘
    12 
    13 
    14 int main(int argc, char** argv)
    15 {
    16     Mat src = imread("test.jpg");
    17     Mat src1 = src.clone();
    18     Mat dst, edge, gray;
    19 
    20     //初始化输出图
    21     dst.create(src1.size(), src1.type());6
    22     dst = Scalar::all(0);
    23 
    24     //转成灰度图
    25     cvtColor(src1, gray, COLOR_BGR2GRAY);
    26 
    27     //均值滤波降噪,也可以用其他滤波方法
    28     blur(gray, edge, Size(3, 3));
    29 
    30     //运行canny算子,得到边缘
    31     Canny(edge, edge, 3, 9, 3);
    32 
    33     //掩膜的存在使得只有边缘部分被copy,得到彩色的边缘
    34     src1.copyTo(dst, edge);
    35 
    36     imshow("效果图", dst);
    37     
    38     waitKey(0);
    39     return 0;
    40 
    41 }

     

    不管是哪种方法最后得到的都是二值图像

  • 相关阅读:
    DP -- 递推
    二分查找题
    动态规划
    二分专题
    并查集
    三分法
    二分法
    插入排序
    排序小结
    Go go.mod入门
  • 原文地址:https://www.cnblogs.com/long5683/p/9671966.html
Copyright © 2011-2022 走看看