使用 OpenCV 进行视觉图片调整的几种常见方法

以下是使用 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()

* ```

  • 指定缩放比例 :通过设置fxfy参数来确定宽度和高度的缩放比例。如将图片按照 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()

* ```

相关推荐
X.AI66614 分钟前
YouTube评论情感分析项目84%正确率:基于BERT的实战复现与原理解析
人工智能·深度学习·bert
艾莉丝努力练剑21 分钟前
【C++:继承】面向对象编程精要:C++继承机制深度解析与最佳实践
开发语言·c++·人工智能·继承·c++进阶
小宁爱Python36 分钟前
从零搭建 RAG 智能问答系统 6:Text2SQL 与工作流实现数据库查询
数据库·人工智能·python·django
Hard_Liquor37 分钟前
Datawhale秋训营-“大运河杯”数据开发应用创新大赛
人工智能·深度学习·算法
运维行者_1 小时前
AWS云服务故障复盘——从故障中汲取的 IT 运维经验
大数据·linux·运维·服务器·人工智能·云计算·aws
Saniffer_SH1 小时前
搭载高性能GPU的英伟达Nvidia DGX Spark桌面性能小怪兽国内首台开箱视频!
人工智能·深度学习·神经网络·ubuntu·机器学习·语言模型·边缘计算
Wnq100721 小时前
巡检机器人户外视觉识别困境剖析与自动优化模式构建
图像处理·目标检测·低代码·计算机视觉·目标跟踪·机器人·需求分析
数字化脑洞实验室1 小时前
AI决策vs人工决策:效率的底层逻辑与选择边界
人工智能
可触的未来,发芽的智生1 小时前
追根索源:换不同的词嵌入(词向量生成方式不同,但词与词关系接近),会出现什么结果?
javascript·人工智能·python·神经网络·自然语言处理
递归不收敛1 小时前
三、检索增强生成(RAG)技术体系
人工智能·笔记·自然语言处理