玖叶教程网

前端编程开发入门

计算机视觉中的边缘检测示例(视觉计算边缘节点)

图像边缘检测的任务在计算机视觉(CV)中非常常见。在本文中,我将演示如何使用Matlab / Octave和OpenCV库执行边缘检测,也用于实时视频处理。

使用Octave进行边缘检测

我们将使用LennaS?derberg的标准测试图像。它是512x512 RGB图像。

我们将把它转换成单色,因为图像必须是二维和灰度的。

要在Octave / Matlab中执行边缘检测,我们将使用图像包中的edge()函数。

对于默认参数来说还不错,呵呵!

edge()函数至少将图像和方法作为参数。可选参数取决于所选方法。对于Canny算法,这些是在偏导数计算之前用于降噪的较低和较高阈值 - 和sigma?。您可能必须使用这些来获得更好的结果。

Octave图像包中支持的其他算法是:

  • Kirsch
  • Lindeberg?—?after Tony Lindeberg
  • LoG?—?Laplacian of Gaussian
  • Roberts
  • Prewitt
  • zerocross
  • Andy?—?after Andy Adlers

使用OpenCV进行图像边缘检测

Python代码实现如下:

import cv2
from matplotlib import pyplot as plt
img = cv2.imread('cv_edge_detection/lena.png',0)
plt.figure(figsize=(7,7))
plt.axis('Off')
plt.imshow(img, cmap='Greys_r');
imgEdge = cv2.Canny(img,80,200)
plt.figure(figsize=(7,7))
plt.axis('Off')
plt.imshow(imgEdge, cmap='Greys_r');
plt.figure(figsize=(7,7))
plt.axis('Off')
plt.imshow(imgEdge, cmap='Greys');

使用OpenCV进行实时视频边缘检测

OpenCV库允许实时轻松捕获和处理视频流。Python实现的示例代码如下:

import cv2 
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 the camera 
 ret, frame = cap.read() 
 
 # convert 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 the original image 
 cv2.imshow('Original',frame) 
 
 # find edges in the input image and 
 # mark 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 capture 
cap.release() 
 
# De-allocate any associated memory
cv2.destroyAllWindows() 

这是视频流边缘检测的结果。

使用OpenCV对视频流进行实时边缘检测

结论

因此,我们可以认识到,边缘检测是一项可做的任务,即使对于实时视频处理,也可以容易地使用强大的OpenCV库。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言