c++ OpenCV 边缘检测

c++ OpenCV 边缘检测

#include <iostream>
#include <filesystem>
#include <string>
#include <windows.h>
#include <opencv2/opencv.hpp>

namespace fs = std::filesystem;
using namespace cv;
using namespace std;

int main()
{
    //std::cout << "Hello World!\n";

    //fs::path currentPath = fs::current_path();
    //string filename = currentPath.string() + "\\jzh.png";

    // 图片路径
    string file = "F:/opencv/console/x64/Debug/jzh.png";

    // 显示原图
    Mat src = imread(file);
    imshow("src", src);

    // 灰度
    Mat gray;
    cvtColor(src, gray, COLOR_BGR2GRAY);
    imshow("gray", gray);

    // 边缘检测
    /*
    image 输入单通道图像(可以是彩色图像)对于多通道的图像可以用cvCvtColor()修改。
    edges 输出的边缘图像 ,也是单通道的,但是是黑白的
    threshold1 第一个阈值
    threshold2 第二个阈值
    apertureSize Sobel 算子内核大小
    函数 cv::Canny 采用 Canny 算法发现输入图像的边缘而且在输出图像中标识这些边缘。
    threshold1和threshold2 当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割。
    */

    Mat edge;
    cv::Canny(gray, edge, 50, 200, 3, false);
    imshow("edge", edge);

    waitKey(0);
    destroyAllWindows();
    return 0;
}

 

发表回复

您的电子邮箱地址不会被公开。