OpenCV Canny边缘检测

2024年11月23日 OpenCV Canny边缘检测 极客笔记

OpenCV Canny边缘检测

边缘检测指的是识别图像中物体的边界。我们将学习使用Canny边缘检测技术进行边缘检测。Canny边缘检测函数的语法如下:

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

参数-

  • /path/to/img: 图像文件路径(必需)
  • minVal: 最小强度梯度(必需)
  • maxVal: 最大强度梯度(必需)
  • aperture: 可选参数
  • 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

输出:

示例2:实时边缘检测

# 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()

输出:

本文链接:http://so.lmcjl.com/news/18355/

展开阅读全文
相关内容