计算机视觉中的边缘检测示例
图像边缘检测的任务在计算机视觉(CV)中非常常见。在本文中,我将演示如何使用Matlab / Octave和OpenCV库执行边缘检测,也用于实时视频处理。
使用Octave进行边缘检测
我们将使用LennaSöderberg的标准测试图像。它是512x512 RGB图像。


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


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


结果:Canny算法具有默认参数
对于默认参数来说还不错,呵呵!
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');

Canny算法,阈值为80和200
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库。
相关推荐
木瓜子 2020-08-04
yuanlunxi 2020-07-29
开源节流 2020-07-17
Samurai 2020-06-19
juary 2020-11-10
xceman 2020-10-15
guojin0 2020-10-08
cswingman 2020-10-05
数智集 2020-09-14
湾区人工智能 2020-09-14
juary 2020-09-10
littlethunder 2020-09-03
木瓜子 2020-08-31
邓肯 2020-08-30
PokiFighting 2020-08-27
ibelieveican0 2020-07-05
littlethunder 2020-06-05
wishchinYang 2020-06-03