边缘提取

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import cv2
import numpy
import argparse

img = cv2.imread('C:/Users/yiming/Desktop/python_try/opencv_first_try/sweater.jpg')
cv2.imshow('haha',img)
h,w = img.shape[:2]##high、wide像素值

print(h,w)

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)##将原图像转化为灰度图
cv2.imshow('gray',gray)
canny = cv2.Canny(gray,30,200)##30和200为边缘检测的阈值,小于30不是边界(黑),大于200是边界(白)。
canny = numpy.uint8(numpy.absolute(canny))##canny矩阵绝对值化
cv2.imshow('edge',canny)

Canny边缘提取原理

1、高斯模糊

2、计算梯度幅值和方向

3、非最大值抑制

4、双阈值

5、滞后边界跟踪

说明

目前的代码只是用opencv库中的canny函数做了一下简单的边缘提取,并没有用上述的高斯模糊和滞后边界跟踪,以后有空了可以更新一下代码。

效果图

因为之前做sitp的智能衣柜有一项是识别衣服,所以做了几个衣服的图。

可以看出canny算法的准确度还是很高的。