图像读取与显示

使用OpenCV读取图像文件的函数是cv2.imread(),支持多种格式(如JPEG、PNG、BMP等)。参数包括文件路径和读取模式(如灰度cv2.IMREAD_GRAYSCALE或彩色cv2.IMREAD_COLOR)。显示图像使用cv2.imshow(),需配合cv2.waitKey()控制窗口显示时间。

import cv2
img = cv2.imread('image.jpg', cv2.IMREAD_COLOR)
cv2.imshow('Display', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

色彩空间转换

OpenCV默认使用BGR格式,可通过cv2.cvtColor()转换为其他色彩空间(如RGB、HSV、灰度)。HSV空间常用于颜色分割,灰度图可简化计算。

gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

图像二值化

二值化将图像转换为黑白两种像素值,常用方法有全局阈值(cv2.threshold())和自适应阈值(cv2.adaptiveThreshold())。Otsu算法可自动确定最佳阈值。

_, binary_img = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY)
adaptive_img = cv2.adaptiveThreshold(gray_img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)

图像滤波

平滑滤波用于降噪,常见方法包括:

  • 均值滤波:cv2.blur()cv2.boxFilter()
  • 高斯滤波:cv2.GaussianBlur(),保留边缘效果更好
  • 中值滤波:cv2.medianBlur(),适合椒盐噪声
blurred = cv2.GaussianBlur(img, (5, 5), 0)

边缘检测

Canny算法是经典的边缘检测方法,步骤包括高斯滤波、梯度计算、非极大值抑制和双阈值检测。

edges = cv2.Canny(blurred, threshold1=50, threshold2=150)

形态学操作

用于处理二值图像中的形状:

  • 腐蚀:cv2.erode(),消除边界点
  • 膨胀:cv2.dilate(),填补空洞
  • 开运算(先腐蚀后膨胀)和闭运算(先膨胀后腐蚀)
kernel = np.ones((3, 3), np.uint8)
eroded = cv2.erode(binary_img, kernel, iterations=1)

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐