学习视频: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() # 销毁/关闭所有窗口