美文网首页
opencv sobel算子例子

opencv sobel算子例子

作者: 一路向后 | 来源:发表于2021-12-13 22:34 被阅读0次

1.源码实现

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
    string file = "./1.jpg";

    Mat img = imread(file.c_str(), -1);

    pyrDown(img, img, Size(img.cols/2, img.rows/2));

    Mat gray, grad_x, grad_y, grad_xy;

    //高斯模糊
    GaussianBlur(img, img, Size(5,5), 0, 0);

    //转灰度图
    cvtColor(img, gray, CV_BGR2GRAY);

    //Sobel处理
    Sobel(gray, grad_x, CV_16S, 1, 0, 3);           //经典Sobel算子
    Sobel(gray, grad_y, CV_16S, 0, 1, 3);
    //Scharr(gray_src, grad_x, CV_16S, 1, 0, 3);        //改进Sobel算子
    //Scharr(gray_src, grad_y, CV_16S, 0, 1, 3);

    convertScaleAbs(grad_x, grad_x);            //可能为负;取绝对值;确保显示
    convertScaleAbs(grad_y, grad_y);

    addWeighted(grad_x, 0.5, grad_y, 0.5, 0, grad_xy);  //混合x,y梯度

    imwrite("sobel.jpg", grad_xy);

    return 0;
}

2.编译源码

$ g++ -o test test.cpp -std=c++11 -I/usr/local/include -L/usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -Wl,-rpath=/usr/local/lib

3.运行结果

1.jpg
sobel.jpg

相关文章

网友评论

      本文标题:opencv sobel算子例子

      本文链接:https://www.haomeiwen.com/subject/ecwsfrtx.html