Python OpenCV图像处理第五部分有哪些新技巧?

2026-05-24 16:021阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计807个文字,预计阅读时间需要4分钟。

Python OpenCV图像处理第五部分有哪些新技巧?

图像变换:图像缩放与调整大小。图像缩放仅是调整图像的大小,而OpenCV提供了`cv.resize()`函数来实现这一功能。原函数如下:

pythonresize(src, dsize=None, dst=None, fx=None, fy=None, interpolation=None)

图像几何变换

图像缩放

图像缩放只是调整图像的大小,为此, OpenCV 为我们提供了一个函数 cv.resize() ,原函数如下:

resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None)

src 表示的是输入图像,而 dsize 代表的是输出图像的大小,如果为 0 ,则:

dsize=Size(round(fxsrc.cols),round(fysrc.rows))

dsize 和 fx 、 fy 不能同时为 0 。

fx 、fy 是沿 x 轴和 y 轴的缩放系数,默认取 0 时,算法如下:

Python OpenCV图像处理第五部分有哪些新技巧?

fx=(double)dsize.width/src.cols
fy=(double)dsize.height/src.rows

最后一个参数 interpolation 表示插值方式:

INTER_NEAREST – 最近邻插值
INTER_LINEAR – 线性插值(默认)
INTER_AREA – 区域插值
INTER_CUBIC – 三次样条插值
INTER_LANCZOS4 – Lanczos插值

示例:

import cv2 as cv
#读取图片
src = cv.imread('data.jpg')
print(src.shape)

#图像缩放
result = cv.resize(src, (300, 150))
print(result.shape)

#显示图像
cv.imshow("src", src)
cv.imshow("result", result)

#等待显示
cv.waitKey()
cv.destroyAllWindows()


需要注意的是,这里的 (300, 150) 设置的是 dsize 的列数为 300 ,行数为 150 。

同理,我们可以通过设定一个比例进行缩放,可以是等比例缩放,也可以是不等比例缩放,下面是等比例缩放的示例:

import cv2 as cv

# 设定比例
scale = 0.5

#读取图片
src = cv.imread('data.jpg')
rows, cols = src.shape[:2]

#图像缩放
result = cv.resize(src, ((int(cols * scale), int(rows * scale))))
print(result.shape)

#显示图像
cv.imshow("src", src)
cv.imshow("result", result)

#等待显示
cv.waitKey()
cv.destroyAllWindows()

除了可通过设定 dszie 对图像进行缩放,我们还可以通过设定 fx 和 fy 对图像进行缩放:

import cv2 as cv

#读取图片
src = cv.imread('data.jpg')
print(src.shape)

#图像缩放
result = cv.resize(src, None, fx=0.5, fy=0.5)
print(result.shape)

#显示图像
cv.imshow("src", src)
cv.imshow("result", result)

#等待显示
cv.waitKey()
cv.destroyAllWindows()

图像平移

图像平移是通过仿射函数 warpAffine() 来实现的,原函数如下:

warpAffine(src, M, dsize, dst=None, flags=None,borderMode=None, borderValue=None)

在图像平移中我们会用到前三个参数:

  • 需要变换的原始图像
  • 移动矩阵M
  • 变换的图像大小(如果这个大小不和原始图像大小相同,那么函数会自动通过插值来调整像素间的关系)。
  • 图像的平移是沿着 x 方向移动 tx 距离, y 方向移动 ty 距离,那么需要构造移动矩阵:

    这里不妨各位创建一些矩阵来乘以这个M看看

    本文共计807个文字,预计阅读时间需要4分钟。

    Python OpenCV图像处理第五部分有哪些新技巧?

    图像变换:图像缩放与调整大小。图像缩放仅是调整图像的大小,而OpenCV提供了`cv.resize()`函数来实现这一功能。原函数如下:

    pythonresize(src, dsize=None, dst=None, fx=None, fy=None, interpolation=None)

    图像几何变换

    图像缩放

    图像缩放只是调整图像的大小,为此, OpenCV 为我们提供了一个函数 cv.resize() ,原函数如下:

    resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None)

    src 表示的是输入图像,而 dsize 代表的是输出图像的大小,如果为 0 ,则:

    dsize=Size(round(fxsrc.cols),round(fysrc.rows))

    dsize 和 fx 、 fy 不能同时为 0 。

    fx 、fy 是沿 x 轴和 y 轴的缩放系数,默认取 0 时,算法如下:

    Python OpenCV图像处理第五部分有哪些新技巧?

    fx=(double)dsize.width/src.cols
    fy=(double)dsize.height/src.rows

    最后一个参数 interpolation 表示插值方式:

    INTER_NEAREST – 最近邻插值
    INTER_LINEAR – 线性插值(默认)
    INTER_AREA – 区域插值
    INTER_CUBIC – 三次样条插值
    INTER_LANCZOS4 – Lanczos插值

    示例:

    import cv2 as cv
    #读取图片
    src = cv.imread('data.jpg')
    print(src.shape)

    #图像缩放
    result = cv.resize(src, (300, 150))
    print(result.shape)

    #显示图像
    cv.imshow("src", src)
    cv.imshow("result", result)

    #等待显示
    cv.waitKey()
    cv.destroyAllWindows()


    需要注意的是,这里的 (300, 150) 设置的是 dsize 的列数为 300 ,行数为 150 。

    同理,我们可以通过设定一个比例进行缩放,可以是等比例缩放,也可以是不等比例缩放,下面是等比例缩放的示例:

    import cv2 as cv

    # 设定比例
    scale = 0.5

    #读取图片
    src = cv.imread('data.jpg')
    rows, cols = src.shape[:2]

    #图像缩放
    result = cv.resize(src, ((int(cols * scale), int(rows * scale))))
    print(result.shape)

    #显示图像
    cv.imshow("src", src)
    cv.imshow("result", result)

    #等待显示
    cv.waitKey()
    cv.destroyAllWindows()

    除了可通过设定 dszie 对图像进行缩放,我们还可以通过设定 fx 和 fy 对图像进行缩放:

    import cv2 as cv

    #读取图片
    src = cv.imread('data.jpg')
    print(src.shape)

    #图像缩放
    result = cv.resize(src, None, fx=0.5, fy=0.5)
    print(result.shape)

    #显示图像
    cv.imshow("src", src)
    cv.imshow("result", result)

    #等待显示
    cv.waitKey()
    cv.destroyAllWindows()

    图像平移

    图像平移是通过仿射函数 warpAffine() 来实现的,原函数如下:

    warpAffine(src, M, dsize, dst=None, flags=None,borderMode=None, borderValue=None)

    在图像平移中我们会用到前三个参数:

  • 需要变换的原始图像
  • 移动矩阵M
  • 变换的图像大小(如果这个大小不和原始图像大小相同,那么函数会自动通过插值来调整像素间的关系)。
  • 图像的平移是沿着 x 方向移动 tx 距离, y 方向移动 ty 距离,那么需要构造移动矩阵:

    这里不妨各位创建一些矩阵来乘以这个M看看