📜  OpenCV Canny边缘检测

📅  最后修改于: 2021-01-07 06:37:12             🧑  作者: Mango

OpenCV Canny边缘检测

边缘检测是识别图像中对象边界的术语。我们将学习使用Canny边缘检测技术的边缘检测。语法Canny边缘检测函数被给定为:

edges = cv2.Canny('/path/to/img', minVal, maxVal, apertureSize, L2gradient)

参数-

  • / path / to / img:图片的文件路径(必填)
  • minVal:最小强度梯度(必需)
  • maxVal:最大强度梯度(必需)
  • 孔径:这是可选参数。
  • L2gradient:其默认值为false,如果值为true,则Canny()使用计算开销更大的方程式检测边缘,从而以资源为代价提供更高的准确性。

范例:1

import cv2
img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat_16x9.jpg')
edges = cv2.Canny(img, 100, 200)

cv2.imshow("Edge Detected Image", edges)
cv2.imshow("Original Image", img)
cv2.waitKey(0)  # waits until a key is pressed
cv2.destroyAllWindows()  # destroys the window showing image

输出:

示例:实时边缘检测

# import libraries of python OpenCV  
import cv2

# import Numpy by alias name np
import numpy as np

# capture frames from a camera 
cap = cv2.VideoCapture(0)

# loop runs if capturing has been initialized 
while (1):

    # reads frames from a camera 
    ret, frame = cap.read()

    # converting BGR to HSV 
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    # define range of red color in HSV 
    lower_red = np.array([30, 150, 50])
    upper_red = np.array([255, 255, 180])

    # create a red HSV colour boundary and  
    # threshold HSV image 
    mask = cv2.inRange(hsv, lower_red, upper_red)

    # Bitwise-AND mask and original image 
    res = cv2.bitwise_and(frame, frame, mask=mask)

    # Display an original image 
    cv2.imshow('Original', frame)

    # discovers edges in the input image image and 
    # marks them in the output map edges 
    edges = cv2.Canny(frame, 100, 200)

    # Display edges in a frame 
    cv2.imshow('Edges', edges)

    # Wait for Esc key to stop 
    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break

# Close the window 
cap.release()

# De-allocate any associated memory usage 
cv2.destroyAllWindows()

输出: