使用 Python opencv 缩放图像

突发奇想来用 Python 来缩放图像,搜到可以用 opencv 来实现功能,就稍微了解一下,当然 opencv 的功能不只这些。

注意:此处所有 cv 在实际写时改成 cv2 或者在导入库时加入一句 import cv2 as cv

基本功能

读取图像

可以用 cv.imread() 来读取图像,一共有两个参数,第一个提供图片所在目录,第二个是一个标志,表示读取的方式:

  • cv.IMREAD_COLOR :加载彩色图像,默认

  • cv.IMREAD_GRAYSCALE:以灰度模式加载图像

  • cv.IMREAD_UNCHANGED:加载图像

注意:即使图像路径错误,它也不会引发任何错误,但是 print img 会给出 None

显示图像

使用函数 cv.imshow() 在窗口上显示图像,窗口自动适合图像尺寸。

第一个参数是字符串,表示窗口名,第二个参数是我们需要显示的图片的参数。

一般配合以下函数使用:

1
2
3
cv.imshow('img',img)
cv.waitKey(0)
cv.destoryAllWindows()

cv.waitKey() 是一个控制键盘的函数。其参数是以毫秒为单位的时间。如果您在这段时间内按下任何键,程序将继续运行。如果 0 被传递,它将无限期地等待一次敲击键。

写入图像

使用 cv.imwrite() 保存图像,第一个参数是文件名,第二个参数是要保存的图像。

缩放

使用函数 cv.resize()

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

scr:是需要缩放的图片的对象

dsize:目标图像大小。当 dsize 为 0 时,通过以下公式计算得出:

  • disize = Size(round(fx*scr.cols) , round(fy*src.rows))

所以 disze(fx , fy) 不能同时为 0

fx,fy :水平和垂直轴的比例因子。当它为零时,计算公式如下:(double)dsize.width/src.cols(double)dsize.width/src.cols

interpolation :插值方法,具体我也不太懂,最好使用 cv.INTER_LINEAR 参数

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Distant-Skys
# To make a picture smaller or bigger.

import cv2 as cv
import numpy as np

image = cv.imread('1.jpg')

res = cv.resize(image,None,fx=0.7,fy=0.7,interpolation=cv.INTER_CUBIC)
# if want to make picture bigger ,let ((fx and fy) > 1).

# print the result picture.
# cv.imshow('result image',res)
# cv.waitKey(0)
# cv.destroyAllWindows()

cv.imwrite('1_result.jpg',res)

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!