零基础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);

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

相关推荐
GIS小天24 分钟前
AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月7日第101弹
人工智能·算法·机器学习·彩票
阿部多瑞 ABU33 分钟前
主流大语言模型安全性测试(三):阿拉伯语越狱提示词下的表现与分析
人工智能·安全·ai·语言模型·安全性测试
cnbestec41 分钟前
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
人工智能·线性代数·触觉传感器
不爱写代码的玉子1 小时前
HALCON透视矩阵
人工智能·深度学习·线性代数·算法·计算机视觉·矩阵·c#
2301_797604241 小时前
学习记录:DAY32
学习
sbc-study1 小时前
PCDF (Progressive Continuous Discrimination Filter)模块构建
人工智能·深度学习·计算机视觉
EasonZzzzzzz1 小时前
计算机视觉——相机标定
人工智能·数码相机·计算机视觉
猿小猴子1 小时前
主流 AI IDE 之一的 Cursor 介绍
ide·人工智能·cursor
要努力啊啊啊1 小时前
Reranker + BM25 + FAISS 构建高效的多阶段知识库检索系统一
人工智能·语言模型·自然语言处理·faiss
EasyDSS1 小时前
国标GB28181设备管理软件EasyGBS远程视频监控方案助力高效安全运营
网络·人工智能