零基础Opencv学习(二)

图像变换

一、边缘检测

1:边缘检测 Canny

    cv::Mat iamgeCan;
    cv::Canny(image, iamgeCan, 3, 9, 3);
    cv::imshow("Canny", iamgeCan);

    /// 边缘检测高级用法 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用法

    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用法

    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滤波器用法

    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);

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随风逐流wrx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值