使用 OpenCV 进行图像处理 - 带有实际示例

介绍

OpenCV – 开源计算机视觉。它是计算机视觉和图像处理任务中使用最广泛的工具之一。它被用于各种应用,如面部检测、视频捕捉、跟踪移动物体、对象公开。如今应用在 Covid 中,如口罩检测、社交距离等等。

如果你想了解有关 OpenCV 的更多信息,请查看此链接 https://opencv.org/。

如果你想了解用于图像处理的 Python 库,请查看此链接 https://www.analyticsvidhya.com/blog/2021/04/top-python-libraries-for-image-processing-in-2021/。

如果你想学习使用 NumPy 进行图像处理,请查看此链接 https://www.analyticsvidhya.com/blog/2021/05/image-processing-using-numpy-with-practical-implementation-and-code/。

在这篇博客中,将通过实际示例涵盖图像处理中一些最重要的任务来详细介绍 OpenCV。那么让我们开始吧!

目录

  • 边缘检测和图像梯度

  • 图像的膨胀、打开、关闭和腐蚀

  • 透视变换

  • 图像金字塔

  • 裁剪

  • 缩放、插值和重新调整大小

  • 阈值、自适应阈值和二值化

  • 锐化

  • 模糊

  • 轮廓

  • 使用霍夫线检测线

  • 寻找角落

  • 计算圆和椭圆

边缘检测和图像梯度

它是图像处理中最基本和最重要的技术之一。

检查以下代码以获取完整实现。有关更多信息,请查看此链接 https://docs.opencv.org/3.4/d2/d2c/tutorial_sobel_derivatives.html

image = cv2.imread('fruit.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
hgt, wdt,_ = image.shape
# Sobel Edges
x_sobel = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=5)
y_sobel = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=5)
plt.figure(figsize=(20, 20))
plt.subplot(3, 2, 1)
plt.title("Original")
plt.imshow(image)
plt.subplot(3, 2, 2)
plt.title("Sobel X")
plt.imshow(x_sobel)
plt.subplot(3, 2, 3)
plt.title("Sobel Y")
plt.imshow(y_sobel)
sobel_or = cv2.bitwise_or(x_sobel, y_sobel)
plt.subplot(3, 2, 4)
plt.imshow(sobel_or)
laplacian = cv2.Laplacian(image, cv2.CV_64F)
plt.subplot(3, 2, 5)
plt.title("Laplacian")
plt.imshow(laplacian)
## There are two values: threshold1 and threshold2.
## Those gradients that are greater than threshold2 => considered as an edge
## Those gradients that are below threshold1 => considered not to be an edge.
## Those gradients Values that are in between threshold1 and threshold2 => either classified as edges or non-edges
# The first threshold gradient
canny = cv2.Canny(image, 50, 120)
plt.subplot(3, 2, 6)
plt.imshow(canny)

图像的膨胀、打开、关闭和腐蚀

这是基本的图像处理操作。这些用于去除噪声、查找图像中的强度洞或凹凸等等。

检查以下代码以获得实际实现。有关更多信息,请查看此链接 https://docs.opencv.org/3.4/db/df6/tutorial_erosion_dilatation.html

image = cv2.imread('LinuxLogo.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.figure(figsize=(20, 20))
plt.subplot(3, 2, 1)
plt.title("Original")
plt.imshow(image)

kernel = np.ones((5,5), np.uint8)

erosion = cv2.erode(image, kernel, iterations = 1)
plt.subplot(3, 2, 2)
plt.title("Erosion")
pl
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值