Python3+OpenCV:图片的边缘检测

 Python3+OpenCV:图片的边缘检测

  • Canny边缘检测的简单概念
  • OpenCV函数:cv2.Canny()

Canny边缘检测方法常被誉为边缘检测的最优方法,下面是代码:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import cv2
import numpy as np

# 1.Canny边缘检测
img = cv2.imread('handwriting.jpg', 0)
edges = cv2.Canny(img, 30, 70)

cv2.imshow('canny', np.hstack((img, edges)))
cv2.waitKey(0)

边缘检测后 运行的效果

Python3+OpenCV:图片的边缘检测_第1张图片

 

Canny推荐的高低阈值比在2:1到3:1之间。

先阈值分割后检测

其实很多情况下,阈值分割后再检测边缘,效果会更好:

代码如下:

 

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import cv2
import numpy as np
img = cv2.imread('handwriting.jpg', 0)
# 2.先阈值,后边缘检测
# 阈值分割(使用到了番外篇讲到的Otsu自动阈值)
_, thresh = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
edges = cv2.Canny(thresh, 30, 70)

cv2.imshow('canny', np.hstack((img, thresh, edges)))
cv2.waitKey(0)

效果如下:

Python3+OpenCV:图片的边缘检测_第2张图片

你可能感兴趣的:(openCV2,python3)