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

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

相关推荐
说私域1 小时前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的超级文化符号构建路径研究
人工智能·小程序·开源
永洪科技1 小时前
永洪科技荣获商业智能品牌影响力奖,全力打造”AI+决策”引擎
大数据·人工智能·科技·数据分析·数据可视化·bi
shangyingying_11 小时前
关于小波降噪、小波增强、小波去雾的原理区分
人工智能·深度学习·计算机视觉
码荼2 小时前
学习开发之hashmap
java·python·学习·哈希算法·个人开发·小白学开发·不花钱不花时间crud
书玮嘎2 小时前
【WIP】【VLA&VLM——InternVL系列】
人工智能·深度学习
猫头虎2 小时前
猫头虎 AI工具分享:一个网页抓取、结构化数据提取、网页爬取、浏览器自动化操作工具:Hyperbrowser MCP
运维·人工智能·gpt·开源·自动化·文心一言·ai编程
要努力啊啊啊3 小时前
YOLOv2 正负样本分配机制详解
人工智能·深度学习·yolo·计算机视觉·目标跟踪
CareyWYR3 小时前
大模型真的能做推荐系统吗?ARAG论文给了我一个颠覆性的答案
人工智能
特立独行的猫a3 小时前
百度AI文心大模型4.5系列开源模型评测,从安装部署到应用体验
人工智能·百度·开源·文心一言·文心一言4.5