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

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

相关推荐
视***间2 分钟前
智驱万物,视联未来 —— 视程空间以 AI 硬科技赋能全场景智能革新
人工智能·边缘计算·视程空间·ai算力开发板
一个java开发21 分钟前
mcp demo 智能天气服务:经纬度预报与城市警报
人工智能
阿里云大数据AI技术23 分钟前
OmniThoughtV:面向多模态深度思考的高质量数据蒸馏
人工智能
jkyy201427 分钟前
AI健康医疗开放平台:企业健康业务的“新基建”
大数据·人工智能·科技·健康医疗
hy156878634 分钟前
coze编程-工作流-起起起---废(一句话生成工作流)
人工智能·coze·自动编程
hssfscv35 分钟前
Javaweb 学习笔记——html+css
前端·笔记·学习
brave and determined37 分钟前
CANN训练营 学习(day8)昇腾大模型推理调优实战指南
人工智能·算法·机器学习·ai实战·昇腾ai·ai推理·实战记录
Fuly102439 分钟前
MCP协议的简介和简单实现
人工智能·langchain
Mr.Jessy41 分钟前
JavaScript高级:深浅拷贝、异常处理、防抖及节流
开发语言·前端·javascript·学习
焦耳加热1 小时前
湖南大学/香港城市大学《ACS Catalysis》突破:微波热冲击构筑异质结,尿素电氧化性能跃升
人工智能·科技·能源·制造·材料工程