学习视频: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(十)——Canny边缘提取
Python+OpenCV(十一)——直线检测、圆检测
Python+OpenCV(十三)——对象测量
Python+OpenCV(十四)——膨胀与腐蚀
Python+OpenCV(十五)——开闭操作
Python+OpenCV(十六)——顶帽、黑帽
Python+OpenCV(十七)——人脸识别
Python+OpenCV(十八)——数字/字母验证码识别
源码如下:
# -*- coding = utf-8 -*-
# @Time : 2021/8/3 20:31
# @Author : 西兰花
# @File : OpenCV12.py
# @Software : PyCharm
import cv2 as cv # 引入OpenCV模块
import numpy as np
def countours_demo(image): # 轮廓发现
dst = cv.GaussianBlur(image, (3, 3), 0) # 高斯模糊,降噪
gray = cv.cvtColor(dst, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
cv.imshow("countours_demo1", binary)
cloneImage, contours, heriachy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
for i, contour in enumerate(contours):
cv.drawContours(image, contours, i, (0, 255, 0), 2) # 最后一个参数2表示仅标注轮廓,-1表示填充
print(i)
cv.imshow("countours_demo", image)
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(gray, 50, 150) # 自定义阈值范围;最高阈值必须是最低阈值的3倍
cv.imshow("Canny Egde", edge_output)
return edge_output
print("------ Hello OpenCV ------")
src = cv.imread("C:/Users/Administrator/Pictures/PS/7.png") # 读取图像
cv.imshow("input image_2.jpg", src) # 显示图像
# countours_demo(src)
edge_demo(src)
cv.waitKey(0)
cv.destroyAllWindows() # 销毁/关闭所有窗口