Python+OpenCV(十)——Canny边缘提取

Python+OpenCV(十)——Canny边缘提取

学习视频:python+opencv3.3视频教学 基础入门
其他学习记录:
Python+OpenCV(一)——基础操作
Python+OpenCV(二)——Numpy模块
Python+OpenCV(三)——色彩空间
Python+OpenCV(四)——像素运算
Python+OpenCV(五)——ROI和泛洪填充
Python+OpenCV(六)——均值/中值/自定义/高斯模糊、高斯噪声处理、高斯双边滤波
Python+OpenCV(七)——直方图及其应用
Python+OpenCV(八)——图像二值化
Python+OpenCV(九)——图像金字塔、图像梯度
Python+OpenCV(十一)——直线检测、圆检测
Python+OpenCV(十二)——轮廓发现
Python+OpenCV(十三)——对象测量
Python+OpenCV(十四)——膨胀与腐蚀
Python+OpenCV(十五)——开闭操作
Python+OpenCV(十六)——顶帽、黑帽
Python+OpenCV(十七)——人脸识别
Python+OpenCV(十八)——数字/字母验证码识别

源码如下:

# -*- coding = utf-8 -*-
# @Time : 2021/8/3 16:53
# @Author : 西兰花
# @File : OpenCV10.py
# @Software : PyCharm


"""
Canny算法介绍——五步
1.高斯模糊-GaussianBlur
2.灰度转换-cvtColor
3.计算梯度-Sobel/Scharr
4.非最大信号抑制
5.高低阈值输出二值图像
"""


import cv2 as cv    # 引入OpenCV模块


def edge_demo(image):
    blurred = cv.GaussianBlur(image, (3, 3), 0)     # 高斯模糊处理,目的是降噪
    gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY)  # 灰度处理
    grad_x = cv.Sobel(gray, cv.CV_16SC1, 1, 0)      # x轴梯度计算
    grad_y = cv.Sobel(gray, cv.CV_16SC1, 0, 1)      # y轴梯度计算
    # edge_output = cv.Canny(grad_x, grad_y, 50, 150)
    edge_output = cv.Canny(gray,30, 90)           # 自定义阈值范围;最高阈值必须是最低阈值的3倍
    cv.imshow("Canny Egde", edge_output)
    cv.imwrite("C:/Users/Administrator/Pictures/PS/Canny_Egde.jpeg", edge_output)

    dst = cv.bitwise_and(image, image, mask=edge_output)    # 输出彩色边缘
    cv.imshow("color Egde", dst)
    cv.imwrite("C:/Users/Administrator/Pictures/PS/color_Egde.jpeg", dst)


print("------ Hello OpenCV ------")
src = cv.imread("C:/Users/Administrator/Pictures/PS/27.jpeg")     # 读取图像
cv.imshow("input image_2.jpg", src)    # 显示图像

edge_demo(src)


cv.waitKey(0)

cv.destroyAllWindows()  # 销毁/关闭所有窗口


输出结果:
Python+OpenCV(十)——Canny边缘提取_第1张图片
Python+OpenCV(十)——Canny边缘提取_第2张图片
Python+OpenCV(十)——Canny边缘提取_第3张图片

你可能感兴趣的:(python+OpenCV,opencv,计算机视觉,边缘检测,python)