opencv—常用函数学习_“干货“_4

目录

十二、图像平滑滤波

均值滤波 (blur)

方框滤波 (boxFilter)

中值滤波 (medianBlur)

高斯滤波 (GaussianBlur)

双边滤波 (bilateralFilter)

自定义滤波器 (filter2D)

边缘保留滤波 (edgePreservingFilter)

快速非局部均值去噪 (fastNlMeansDenoising)

彩色图像的快速非局部均值去噪 (fastNlMeansDenoisingColored)

获取高斯核 (getGaussianKernel)

十三、锐化与边缘检测

Sobel算子 (Sobel)

Scharr算子 (Scharr)

Laplacian算子 (Laplacian)

Canny边缘检测器 (Canny)

获取Gabor核 (getGaborKernel)

笛卡尔坐标与极坐标转换 (cartToPolar 和 polarToCart)

十四、数学形态学

获取结构元素 (getStructuringElement)

膨胀操作 (dilate)

腐蚀操作 (erode)

高级形态学变换 (morphologyEx)

http://t.csdnimg.cn/i8pqt —— opencv—常用函数学习_“干货“_总(VIP)

散的正在一部分一部分发,不需要VIP。

资料整理不易,有用话给个赞和收藏吧。


十二、图像平滑滤波

        在OpenCV中,图像平滑滤波(或称为图像去噪)是一种非常常见的操作,通常用于去除图像中的噪声,使图像变得更加平滑。OpenCV提供了多种滤波函数,下面介绍这些滤波函数及其使用示例。

图像平滑滤波函数
blur boxFilter sqBoxFilter medianBlur GaussianBlur
均值滤波 方框滤波 平方方框滤波 中值滤波 高斯滤波
bilateralFilter filter2D sepFilter2D edgePreservingFilter fastNlMeansDenoising
双边滤波 自定义滤波器 分离滤波器 边缘保留滤波 快速非局部均值去噪
fastNlMeansDenoisingColored textureFlattening getGaussianKernel
彩色图像的快速非局部均值去噪 纹理平滑 获取高斯核
均值滤波 (blur)
import cv2
import numpy as np

# 读取图像
image = cv2.imread('path_to_image.jpg')

# 均值滤波
blurred_image = cv2.blur(image, (5, 5))
cv2.imshow('Blurred Image', blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
方框滤波 (boxFilter)
# 方框滤波
box_filtered_image = cv2.boxFilter(image, -1, (5, 5))
cv2.imshow('Box Filtered Image', box_filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
中值滤波 (medianBlur)
# 中值滤波
median_blurred_image = cv2.medianBlur(image, 5)
cv2.imshow('Median Blurred Image', median_blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
高斯滤波 (GaussianBlur)
# 高斯滤波
gaussian_blurred_image = cv2.GaussianBlur(image, (5, 5), 0)
cv2.imshow('Gaussian Blurred Image', gaussian_blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
双边滤波 (bilateralFilter)
# 双边滤波
bilateral_filtered_image = cv2.bilateralFilter(image, 9, 75, 75)
cv2.imshow('Bilateral Filtered Image', bilateral_filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
自定义滤波器 (filter2D)
# 自定义滤波器
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]])
custom_filtered_image = cv2.filter2D(image, -1, kernel)
cv2.imshow('Custom Filtered Image', custom_filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
边缘保留滤波 (edgePreservingFilter)
# 边缘保留滤波
edge_preserved_image = cv2.edgePreservingFilter(image, flags=1, sigma_s=60, sigma_r=0.4)
cv2.imshow('Edge Preserved Image', edge_preserved_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
快速非局部均值去噪 (fastNlMeansDenoising)
# 快速非局部均值去噪
denoised_image = cv2.fastNlMeansDenoising(image, None, 30, 7, 21)
cv2.imshow('Denoised Image', denoised_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
彩色图像的快速非局部均值去噪 (fastNlMeansDenoisingColored)
# 彩色图像的快速非局部均值去噪
denoised_colored_image = cv2.fastNlMeansDenoisingColored(image, None, 30, 30, 7, 21)
cv2.imshow('Denoised Colored Image', denoised_colored_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
获取高斯核 (getGaussianKernel)
# 获取高斯核
gaussian_kernel = cv2.getGaussianKernel(5, 1.5)
print("Gaussian Kernel:\n", gaussian_kernel)

        这些示例展示了如何使用OpenCV中的各种平滑滤波函数来处理图像。根据具体的应用需求,可以灵活运用这些函数来实现复杂的图像平滑和去噪任务。

十三、锐化与边缘检测

        在OpenCV中,锐化与边缘检测是图像处理的重要任务之一,用于检测图像中的边缘和细节。下面介绍一些常用的锐化与边缘检测函数及其使用示例。

锐化与边缘检测函数
Sobel Scharr Laplacian spatialGradient
Sobel算子,用于计算图像的梯度 Scharr算子,Sobel算子的增强版本 Laplacian算子,用于计算图像的拉普拉斯 计算图像的空间梯度
Canny getGaborKernel cartToPolar polarToCart
Canny边缘检测器 获取Gabor核 将笛卡尔坐标转换为极坐标 将极坐标转换为笛卡尔坐标
Sobel算子 (Sobel)
import cv2
import numpy as np

# 读取图像
image = cv2.imread('path_to_image.jpg', cv2.IMREAD_GRAYSCALE)

# 使用Sobel算子检测边缘
sobel_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=3)
sobel_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=3)
sobel_combined = cv2.magnitude(sobel_x, sobel_y)

cv2.imshow('Sobel X', sobel_x)
cv2.imshow('Sobel Y', sobel_y)
cv2.imshow('Sobel Combined', sobel_combined)
cv2.waitKey(0)
cv2.destroyAllWindows()
Scharr算子 (Scharr)
# 使用Scharr算子检测边缘
scharr_x = cv2.Scharr(image, cv2.CV_64F, 1, 0)
scharr_y = cv2.Scharr(image, cv2.CV_64F, 0, 1)
scharr_combined = cv2.magnitude(scharr_x, scharr_y)

cv2.imshow('Scharr X', scharr_x)
cv2.imshow('Scharr Y', scharr_y)
cv2.imshow('Scharr Combined', scharr_combined)
cv2.waitKey(0)
cv2.destroyAllWindows()
Laplacian算子 (Laplacian)
# 使用Laplacian算子检测边缘
laplacian = cv2.Laplacian(image, cv2.CV_64F)
cv2.imshow('Laplacian', laplacian)
cv2.waitKey(0)
cv2.destroyAllWindows()
Canny边缘检测器 (Canny)
# 使用Canny边缘检测器
canny_edges = cv2.Canny(image, 100, 200)
cv2.imshow('Canny Edges', canny_edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
获取Gabor核 (getGaborKernel)
# 获取Gabor核
gabor_kernel = cv2.getGaborKernel((21, 21), 5, np.pi/4, 10, 0.5, 0, ktype=cv2.CV_32F)
filtered_image = cv2.filter2D(image, cv2.CV_8UC3, gabor_kernel)

cv2.imshow('Gabor Kernel', gabor_kernel)
cv2.imshow('Filtered Image', filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
笛卡尔坐标与极坐标转换 (cartToPolarpolarToCart)
# 计算图像的梯度
grad_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=3)
grad_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=3)

# 将梯度从笛卡尔坐标转换为极坐标
magnitude, angle = cv2.cartToPolar(grad_x, grad_y)

# 将梯度从极坐标转换为笛卡尔坐标
x, y = cv2.polarToCart(magnitude, angle)

cv2.imshow('Magnitude', magnitude)
cv2.imshow('Angle', angle)
cv2.waitKey(0)
cv2.destroyAllWindows()

        这些示例展示了如何使用OpenCV中的各种锐化与边缘检测函数来处理图像。根据具体的应用需求,可以灵活运用这些函数来实现复杂的图像锐化和边缘检测任务。

十四、数学形态学

        在OpenCV中,数学形态学是图像处理的重要工具,用于图像的形态变换。常见的操作包括膨胀、腐蚀、开运算、闭运算等。下面介绍这些相关函数及其使用示例。

数学形态学函数
getStructuringElement dilate erode morphologyEx
获取结构元素(核) 膨胀操作 腐蚀操作 高级形态学变换(开运算、闭运算等)

获取结构元素 (getStructuringElement)
import cv2
import numpy as np

# 获取一个3x3的矩形结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
print("Structuring Element:\n", kernel)
膨胀操作 (dilate)
# 读取图像
image = cv2.imread('path_to_image.jpg', cv2.IMREAD_GRAYSCALE)

# 获取结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))

# 进行膨胀操作
dilated_image = cv2.dilate(image, kernel)
cv2.imshow('Dilated Image', dilated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
腐蚀操作 (erode)
# 进行腐蚀操作
eroded_image = cv2.erode(image, kernel)
cv2.imshow('Eroded Image', eroded_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
高级形态学变换 (morphologyEx)
# 开运算(先腐蚀后膨胀)
opened_image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)
cv2.imshow('Opened Image', opened_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 闭运算(先膨胀后腐蚀)
closed_image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)
cv2.imshow('Closed Image', closed_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 梯度运算(膨胀减去腐蚀)
gradient_image = cv2.morphologyEx(image, cv2.MORPH_GRADIENT, kernel)
cv2.imshow('Gradient Image', gradient_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 顶帽运算(原图像减去开运算)
tophat_image = cv2.morphologyEx(image, cv2.MORPH_TOPHAT, kernel)
cv2.imshow('Top Hat Image', tophat_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 黑帽运算(闭运算减去原图像)
blackhat_image = cv2.morphologyEx(image, cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('Black Hat Image', blackhat_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

        这些示例展示了如何使用OpenCV中的数学形态学函数来处理图像。根据具体的应用需求,可以灵活运用这些函数来实现复杂的图像形态变换和处理任务。

相关推荐

  1. opencv函数学习_“干货“_4

    2024-07-18 22:44:02       21 阅读
  2. opencv函数学习_“干货“_总

    2024-07-18 22:44:02       22 阅读
  3. opencv函数学习_“干货“_9

    2024-07-18 22:44:02       31 阅读
  4. opencv函数学习_“干货“_10

    2024-07-18 22:44:02       30 阅读
  5. opencv函数学习_“干货“_7

    2024-07-18 22:44:02       22 阅读
  6. opencv函数学习_“干货“_8

    2024-07-18 22:44:02       24 阅读
  7. opencv函数学习_“干货“_11

    2024-07-18 22:44:02       24 阅读
  8. opencv函数学习_“干货“_6

    2024-07-18 22:44:02       18 阅读
  9. opencv函数学习_“干货“_5

    2024-07-18 22:44:02       24 阅读
  10. opencv函数学习_“干货“_3

    2024-07-18 22:44:02       16 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 22:44:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 22:44:02       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 22:44:02       58 阅读
  4. Python语言-面向对象

    2024-07-18 22:44:02       69 阅读

热门阅读

  1. 计算机视觉篇1 计算机视觉概览

    2024-07-18 22:44:02       23 阅读
  2. C#面:阐述下MVC框架的机制,各个模块的作用?

    2024-07-18 22:44:02       19 阅读
  3. Mysql中delete数据后磁盘空间浅析

    2024-07-18 22:44:02       20 阅读
  4. C# Linq用法

    2024-07-18 22:44:02       19 阅读
  5. Windows桌面应用开发框架

    2024-07-18 22:44:02       23 阅读
  6. 生成 HTTPS 证书并配置到 Nginx 的完整步骤

    2024-07-18 22:44:02       22 阅读
  7. tensorflow1基础函数学习

    2024-07-18 22:44:02       22 阅读
  8. cookies,sessionStorage和localStorage都有什么区别

    2024-07-18 22:44:02       18 阅读
  9. 力扣 541反转链表2

    2024-07-18 22:44:02       22 阅读
  10. Vue3+TypeScript项目目录结构及文件作用

    2024-07-18 22:44:02       24 阅读