零基础Opencv学习(二)

图像变换

一、边缘检测

1:边缘检测 Canny

cpp 复制代码
    cv::Mat iamgeCan;
    cv::Canny(image, iamgeCan, 3, 9, 3);
    cv::imshow("Canny", iamgeCan);
cpp 复制代码
    /// 边缘检测高级用法 Canny用法
    cv::Mat dst, edge, gray;
    dst.create(image.size(), image.type());
    /// 图像转灰度图像
    cv::cvtColor(image, gray, cv::COLOR_BGR2GRAY);
    /// 用3*3内核降噪
    cv::blur(gray, edge, cv::Size(3, 3));
    /// 运行canny算子
    cv::Canny(edge, edge, 3, 9, 3);
    /// dst所有元素设置0
    dst = cv::Scalar::all(0);
    image.copyTo(dst, edge);
    cv::imshow("Canny1", dst);

2:边缘检测 Sobel用法

cpp 复制代码
    cv::Mat grad_x, grad_y;
    cv::Mat abs_grad_x, abs_grad_y, dst;
    /// 求x方向梯度
    cv::Sobel(image, grad_x, CV_16S, 1, 0, 3, 1, 1, cv::BORDER_DEFAULT);
    cv::convertScaleAbs(grad_x, abs_grad_x);
    cv::imshow("abs_grad_x", abs_grad_x);

    /// 求Y方向梯度
    cv::Sobel(image, grad_y, CV_16S, 0, 1, 3, 1, 1, cv::BORDER_DEFAULT);
    cv::convertScaleAbs(grad_x, abs_grad_y);
    cv::imshow("abs_grad_y", abs_grad_y);

    /// 合并方向梯度
    cv::addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dst);
    cv::imshow("dst", dst);

3:边缘检测 Laplacian用法

cpp 复制代码
    cv::Mat src_gray, dst, abs_dst;
    /// 用高斯滤波消除噪声
    cv::GaussianBlur(image, image, cv::Size(3,3), 0, 0, cv::BORDER_DEFAULT);
    /// 转换为灰度图
    cv::cvtColor(image, src_gray, cv::COLOR_BGR2GRAY);
    /// Laplacian
    cv::Laplacian(src_gray, dst, CV_16S, 3, 1, 0, cv::BORDER_DEFAULT);
    /// 计算绝对值
    cv::convertScaleAbs(dst, abs_dst);
    cv::imshow("abs_dst", abs_dst);

4:边缘检测 Scharr滤波器用法

cpp 复制代码
    cv::Mat grad_x, grad_y;
    cv::Mat abs_grad_x, abs_grad_y, dst;

    /// 求x方向梯度
    cv::Scharr(image, grad_x, CV_16S, 1, 0, 1, 0, cv::BORDER_DEFAULT);
    cv::convertScaleAbs(grad_x, abs_grad_x);
    cv::imshow("abs_grad_x", abs_grad_x);

    /// 求Y方向梯度
    cv::Scharr(image, grad_y, CV_16S, 0, 1, 1, 0, cv::BORDER_DEFAULT);
    cv::convertScaleAbs(grad_x, abs_grad_y);
    cv::imshow("abs_grad_y", abs_grad_y);

    /// 合并方向梯度
    cv::addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dst);
    cv::imshow("dst", dst);

好了,后面学习下霍夫变换

相关推荐
Robot2513 分钟前
浅谈,华为切入具身智能赛道
人工智能
只怕自己不够好7 分钟前
OpenCV 图像运算全解析:加法、位运算(与、异或)在图像处理中的奇妙应用
图像处理·人工智能·opencv
CV学术叫叫兽23 分钟前
一站式学习:害虫识别与分类图像分割
学习·分类·数据挖掘
我们的五年34 分钟前
【Linux课程学习】:进程程序替换,execl,execv,execlp,execvp,execve,execle,execvpe函数
linux·c++·学习
一棵开花的树,枝芽无限靠近你1 小时前
【PPTist】添加PPT模版
前端·学习·编辑器·html
果冻人工智能1 小时前
2025 年将颠覆商业的 8 大 AI 应用场景
人工智能·ai员工
代码不行的搬运工1 小时前
神经网络12-Time-Series Transformer (TST)模型
人工智能·神经网络·transformer
VertexGeek1 小时前
Rust学习(八):异常处理和宏编程:
学习·算法·rust
石小石Orz1 小时前
Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~
javascript·人工智能·算法
孤独且没人爱的纸鹤1 小时前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai