关于 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 对图像的基本操作代码的攻略了。