OpenCV-Python 对图像的基本操作代码

  

关于 OpenCV-Python 对图像的基本操作,我们通常会用到以下几个工具:

  • 读取图像
  • 显示图像
  • 保存图像
  • 转换图像颜色空间
  • 裁剪图像
  • 调整图像大小
  • 增强对比度和亮度
  • 图像平移与旋转
  • 应用图像内核和滤波器
  • 绘制图形和文字

下面我们一一进行讲解:

读取图像

OpenCV-Python 可以读取许多图像格式,包括 JPG、PNG、BMP 和 GIF,通过 cv2.imread() 函数读取:

import cv2

image = cv2.imread("image.jpg")   # 读取图片,注意图片和脚本要在同一文件夹下

显示图像

读取图像之后,我们就可以通过 cv2.imshow() 函数将其显示出来:

import cv2

image = cv2.imread("image.jpg")
cv2.imshow("Image", image)
cv2.waitKey(0)    # 等待用户键盘输入

保存图像

如果我们需要将已经处理好的图像进行保存,可以用 cv2.imwrite() 函数:

import cv2

image = cv2.imread("image.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imwrite("gray_image.jpg", gray)

转换图像颜色空间

OpenCV-Python 可以将图像从一种颜色空间转换到另一种,例如将彩色图像转换为灰度图像:

import cv2

image = cv2.imread("image.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow("Gray Image", gray)
cv2.waitKey(0)

裁剪图像

通过 OpenCV-Python,我们可以对图像进行剪裁操作,只需指定感兴趣区域:

import cv2

image = cv2.imread("image.jpg")
cropped = image[100:500, 200:700]   # 裁剪出感兴趣区域
cv2.imshow("Cropped Image", cropped)
cv2.waitKey(0)

调整图像大小

通过 OpenCV-Python,我们也可以对图像进行尺寸调整:

import cv2

image = cv2.imread("image.jpg")
resized = cv2.resize(image, (800, 600))   # 调整图像大小为 800x600
cv2.imshow("Resized Image", resized)
cv2.waitKey(0)

增强对比度和亮度

OpenCV-Python 可以增强图像的对比度和亮度:

import cv2
import numpy as np

image = cv2.imread("image.jpg")
alpha = 1.5   # 控制对比度
beta = 25    # 控制亮度
new_image = np.clip(alpha * image + beta, 0, 255).astype(np.uint8)   # 增强对比度和亮度
cv2.imshow("New Image", new_image)
cv2.waitKey(0)

图像平移与旋转

OpenCV-Python 可以对图像进行平移和旋转:

import cv2

image = cv2.imread("image.jpg")
(rows, cols) = image.shape[:2]

# 平移图像
M = np.float32([[1, 0, 100], [0, 1, 50]])   # 定义平移矩阵
trans_image = cv2.warpAffine(image, M, (cols, rows))   # 平移图像
cv2.imshow("Translated Image", trans_image)

# 旋转图像
M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1)   # 定义旋转矩阵
rotated_image = cv2.warpAffine(image, M, (cols, rows))   # 旋转图像
cv2.imshow("Rotated Image", rotated_image)

cv2.waitKey(0)

应用图像内核和滤波器

OpenCV-Python 可以应用各种内核和滤波器来使图像更清晰、更明亮、更高清:

import cv2
import numpy as np

image = cv2.imread("image.jpg")

# 应用平滑滤波器
kernel = np.ones((5, 5), np.float32) / 25   # 定义平滑内核
smoothed = cv2.filter2D(image, -1, kernel)   # 应用滤波器
cv2.imshow("Smoothed Image", smoothed)

# 应用边缘检测器
edges = cv2.Canny(image, 100, 200)   # 检测图像边缘
cv2.imshow("Edges", edges)

cv2.waitKey(0)

绘制图形和文字

OpenCV-Python 可以用于在图像上绘制线条、矩形和文字等:

import cv2

image = cv2.imread("image.jpg")
cv2.line(image, (0, 0), (400, 400), (0, 0, 255), 5)   # 绘制线条
cv2.rectangle(image, (50, 50), (200, 200), (255, 0, 0), 3)   # 绘制矩形
font = cv2.FONT_HERSHEY_SIMPLEX   # 定义字体
cv2.putText(image, "OpenCV-Python", (400, 50), font, 1, (0, 255, 0), 2)   # 绘制文字
cv2.imshow("Image", image)
cv2.waitKey(0)

以上就是 OpenCV-Python 对图像的基本操作代码的攻略了。

相关文章