以下是使用 OpenCV 进行视觉图片调整的几种常见方法:
调整图片大小
-
指定目标尺寸 :使用
cv2.resize()
函数,通过设定目标图像的宽度和高度来调整图片大小。例如,将图片调整为 200x200 像素:
*python
import cv2
image = cv2.imread('example.jpg')
resized_image = cv2.resize(image, (200, 200))
cv2.imshow('Original Image', image)
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
* ```
-
指定缩放比例 :通过设置
fx
和fy
参数来确定宽度和高度的缩放比例。如将图片按照 0.5 倍的比例缩小:
*python
resized_image = cv2.resize(image, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)
cv2.imwrite('resized_image.jpg', resized_image)
* ```
旋转图片
-
使用旋转变换矩阵 :调用
cv2.getRotationMatrix2D()
函数获取旋转变换矩阵,然后利用cv2.warpAffine()
函数进行仿射变换以实现图片旋转。例如,将图片绕中心点旋转 45 度:
*python
import cv2
import numpy as np
image = cv2.imread('image.jpg')
height, width = image.shape[:2]
center = (width / 2, height / 2)
rotate_matrix = cv2.getRotationMatrix2D(center, 45, 1)
rotated_image = cv2.warpAffine(image, rotate_matrix, (width, height))
cv2.imshow('Rotated Image', rotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
* ```
平移图片
-
构建平移矩阵 :通过构建一个平移矩阵,指定图片在 x 轴和 y 轴方向上的平移距离,再使用
cv2.warpAffine()
函数进行平移变换。例如,将图片在 x 轴方向平移 50 像素,y 轴方向平移 30 像素:
*python
import cv2
import numpy as np
image = cv2.imread('image.jpg')
height, width = image.shape[:2]
translation_matrix = np.float32([[1, 0, 50], [0, 1, 30]])
translated_image = cv2.warpAffine(image, translation_matrix, (width, height))
cv2.imshow('Translated Image', translated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
* ```
翻转图片
-
使用翻转函数 :借助
cv2.flip()
函数实现图片的翻转操作,通过设置翻转方向参数flipCode
来确定翻转方式。例如,分别沿 x 轴、y 轴和对角线翻转图片:
*python
import cv2
image = cv2.imread('image.jpg')
flipped_x = cv2.flip(image, 0) # 沿 x 轴翻转
flipped_y = cv2.flip(image, 1) # 沿 y 轴翻转
flipped_xy = cv2.flip(image, -1) # 沿对角线翻转
cv2.imshow('Flipped X Image', flipped_x)
cv2.imshow('Flipped Y Image', flipped_y)
cv2.imshow('Flipped XY Image', flipped_xy)
cv2.waitKey(0)
cv2.destroyAllWindows()
* ```
图像滤波
-
均值滤波 :利用
cv2.blur()
函数对图像进行均值滤波,通过设定滤波核的大小来控制滤波效果。例如,使用 5x5 的滤波核对图片进行均值滤波:
*python
import cv2
image = cv2.imread('image.jpg')
blurred_image = cv2.blur(image, (5, 5))
cv2.imshow('Blurred Image', blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
* ```
-
高斯滤波 :使用
cv2.GaussianBlur()
函数对图像进行高斯滤波,需指定高斯核的大小和标准差。例如,使用 5x5 的高斯核对图片进行高斯滤波:
*python
import cv2
image = cv2.imread('image.jpg')
gaussian_blurred_image = cv2.GaussianBlur(image, (5, 5), 0)
cv2.imshow('Gaussian Blurred Image', gaussian_blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
* ```
图像裁剪
-
获取感兴趣区域 :通过设定裁剪区域的边界坐标,从原图中截取出感兴趣的部分。例如,裁剪出图片中左上角 200x100 像素大小的区域:
*python
import cv2
image = cv2.imread('image.jpg')
cropped_image = image[0:100, 0:200]
cv2.imshow('Cropped Image', cropped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
* ```