精华内容
下载资源
问答
  • cv2.resize()和transform.resize()的区别

    万次阅读 多人点赞 2019-04-26 16:04:21
    常见的两种图片裁剪方式cv2.resize()和transform.resize(): 1、cv2.resize 通过cv2.resize()裁剪后的图片还是以numpy array的方式保存的, 数值的取值范围是(0~255)。 cv2.resize(src,dsize, dst=None, fx=None...

    欢迎关注WX公众号:【程序员管小亮】

    常见的两种图片裁剪方式cv2.resize()transform.resize()

    1、cv2.resize

    通过cv2.resize()裁剪后的图片还是以numpy array的方式保存的, 数值的取值范围是(0~255)。

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

    参数:

    • scr:原图

    • dsize:输出图像尺寸

    • fx:沿水平轴的比例因子

    • fy:沿垂直轴的比例因子

    • interpolation:插值方法

    import cv2
    import matplotlib.pyplot as plt
    from skimage import transform 
    import numpy as np
    import skimage.io as io  
     
    train_dir = 'C:\\Users\\Administrator\\代码TRY\\1.jpg'
    
    '''以cv2.imread方式读取图片并使用cv2.resize形式裁剪图片'''
    img = cv2.imread('McGrady.jpg')
    img = cv2.resize(img, (208, 208), interpolation=cv2.INTER_CUBIC)
    plt.imshow(img) 
    

    2、transform.resize

    通过transform.resize()裁剪后的图片是以float64的格式存储的,数值的取值范围是(0~1)。

    skimage.transform.resize(image, 
    	output_shape
    )
    

    参数:

    • image:需要改变尺寸的图片

    • output_shape:新的图片尺寸

    通常在制作tfrecord数据集的过程中,我们需要将其转换成numpy array的形式,具体代码如下:

    import cv2
    import matplotlib.pyplot as plt
    from skimage import transform 
    import numpy as np
    import skimage.io as io  
     
    train_dir = 'C:\\Users\\Administrator\\代码TRY\\1.jpg'
    
    '''以io.imread方式读取图片并使用transform形式裁剪图片'''
    # 读图并显示。
    image = io.imread(train_dir)
    plt.imshow(image)
    image =transform.resize(image, (208, 208))
    # 将图片的取值范围改成(0~255)。
    img = image * 255
    img = img.astype(np.uint8)   
    plt.imshow(img) 
    

    python课程推荐。
    在这里插入图片描述

    展开全文
  • cv2.resize()

    万次阅读 多人点赞 2019-09-28 18:48:29
    cv2.resize(InputArray src, OutputArray dst, Size, fx, fy, interpolation) 参数解释: InputArray src 输入图片 OutputArray dst 输出图片 Size 输出图片尺寸 fx, fy 沿x轴,y轴的...

    函数原型:

    1

    cv2.resize(InputArray src, OutputArray dst, Size, fx, fy, interpolation)

    参数解释:

     

    InputArray src 输入图片
    OutputArray dst 输出图片
    Size 输出图片尺寸
    fx, fy 沿x轴,y轴的缩放系数
    interpolation 插入方式

     

    interpolation 选项所用的插值方法:

     

    INTER_NEAREST

    最近邻插值

    INTER_LINEAR

    双线性插值(默认设置)

    INTER_AREA

    使用像素区域关系进行重采样。

    INTER_CUBIC

    4x4像素邻域的双三次插值

    INTER_LANCZOS4

    8x8像素邻域的Lanczos插值

     

    注意:

    1.输出尺寸格式为(宽,高)

    2.默认的插值方法为:双线性插值

    代码演示:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    import cv2 as cv

      

    # 读入原图片

    img = cv.imread('test.jpg')

    # 打印出图片尺寸

    print(img.shape)

    # 将图片高和宽分别赋值给x,y

    x, y = img.shape[0:2]

      

    # 显示原图

    cv.imshow('OriginalPicture', img)

      

    # 缩放到原来的二分之一,输出尺寸格式为(宽,高)

    img_test1 = cv.resize(img, (int(y / 2), int(x / 2)))

    cv.imshow('resize0', img_test1)

    cv.waitKey()

      

    # 最近邻插值法缩放

    # 缩放到原来的四分之一

    img_test2 = cv.resize(img, (0, 0), fx=0.25, fy=0.25, interpolation=cv.INTER_NEAREST)

    cv.imshow('resize1', img_test2)

    cv.waitKey()

    cv.destroyAllWindows()

    深度学习原理与实战教程: https://edu.51cto.com/sd/b5af5 

    展开全文
  • 6.opencv调整图像大小的新方法imutils.resize一、openCV 调整图像大小 ( cv2.resize )二、项目结构和代码讲解1.项目结构2.代码讲解3.比较 OpenCV 插值方法4.OpenCV 图像大小调整结果三、代码下载 在本教程中,您将...

    在本教程中,您将学习如何使用 OpenCV 和 cv2.resize 功能。

    缩放或简单地调整大小是在宽度和高度方面增加或减小图像大小的过程。

    调整图像大小时,重要的是要记住纵横比- 即图像的宽度与其高度的比率。忽略纵横比可能会导致调整大小的图像看起来压缩和扭曲:

    在左边,我们有我们的原始图像。在右侧,我们有两张因不保留纵横比而失真的图像。它们已通过忽略图像的宽度与高度的比率来调整大小。

    图1

    通常,您需要在调整大小时保留图像的纵横比——尤其是当这些图像作为输出呈现给用户时。不过,例外情况肯定适用。当我们探索机器学习/深度学习技术时,我们会发现我们的内部算法经常忽略图像的纵横比;但是一旦我们了解了计算机视觉的基础知识,就会有更多的了解。

    我们还需要记住调整大小函数的插值方法。插值的正式定义是:

    在一组离散的已知数据点的范围内构建新数据点的方法。

    • 插值
      在这种情况下,“已知点”是我们原始图像的像素。插值函数的目标是获取这些像素邻域并使用它们来增加或减少图像的大小。

    一般来说,减小图像的大小会更有益(并且在视觉上更吸引人)。这是因为插值函数只需从图像中删除像素。另一方面,如果我们要增加图像的尺寸,插值函数就必须“填补”以前不存在的像素之间的空隙。

    例如,看一下下图中的图像:在这里插入图片描述
    在左边,我们有我们的原始图像。在中间,我们将图像大小调整为原来的一半——除了图像被调整大小之外,图像“质量”没有任何损失。但是,在右侧,我们显着增加了图像大小。它现在看起来“像素化”。

    正如我上面提到的,您通常会减小图像的大小而不是增加(当然,例外情况确实适用)。通过减小图像尺寸,我们可以处理更少的像素(更不用说处理的“噪音”更少),这导致更快、更准确的图像处理算法。

    请记住,虽然高分辨率图像在视觉上对人眼有吸引力,但它们会损害计算机视觉和图像处理管道:

    • 根据定义,图像越大,数据越多,因此算法处理数据所需的时间越长
    • 高分辨率图像非常详细——但从计算机视觉/图像处理的角度来看,我们更感兴趣的是图像的结构成分,而不是超细粒度的细节
    • 大分辨率图像几乎总是被下采样,以帮助图像处理系统运行得更快、更准确

    一、openCV 调整图像大小 ( cv2.resize )

    在本教程的第一部分中,我们将配置我们的开发环境并查看我们的项目目录结构。

    • 使用 OpenCV 调整图像大小的基础知识和 cv2.resize (不知道长宽比)
    • 如何使用调整尺寸 imutils.rotate (知道纵横比)
    • 您可以使用 OpenCV 中的插值方法(当您需要对图像进行下采样或上采样时很有用)

    二、项目结构和代码讲解

    1.项目结构

    通过博文末尾或此处的的代码:下载.
    下载本博文对应的代码项目,以下是下载解压后的项目结构:
    在这里插入图片描述
    我们的 opencv_resize.py 文件将加载输入 .png 图像,然后执行几个调整大小的操作,从而演示如何使用 OpenCV 的 cv2.resize 调整图像尺寸的功能。

    使用 OpenCV 实现基本的图像大小调整
    到目前为止,在本相关博文中,我已经介绍了两种图像变换:平移和旋转。现在,我们将探讨如何调整图像大小。

    也许,毫不奇怪,我们使用 cv2.resize功能来调整我们的图像。正如我上面提到的,我们在使用这个函数时需要记住图像的纵横比。

    2.代码讲解

    在这里插入图片描述
    我们从第 2-4 行开始并导入所需的 Python 包。

    第 7-10 行解析我们的命令行参数。我们只需要一个参数,- image,即我们要调整大小的输入图像的路径。

    现在让我们从磁盘加载这个图像:在这里插入图片描述
    第 13 和 14 行加载我们的输入图像 从磁盘并将其显示在我们的屏幕上:在这里插入图片描述
    调整图像大小时,我们需要记住图像的纵横比。纵横比是图像的宽度和高度的比例关系:

    纵横比 = 图像宽度 / 图像高度
    如果我们不注意纵横比,我们调整大小将返回看起来失真的结果。

    计算调整大小的比率在第 19 行处理。在这行代码中,我们将新的图像宽度定义为150像素。要计算新高度与旧高度的比例,我们只需定义我们的比例r 是新宽度(150 像素)除以旧宽度,我们使用 image.shape [ 1 ].

    现在我们有了比例,我们可以在第 20 行计算图像的新尺寸。同样,新图像的宽度将为 150 像素。然后通过将旧高度乘以我们的比率并将其转换为整数来计算高度。通过执行此操作,我们保留了图像的原始纵横比。

    图像的实际调整发生在第 23 行。第一个参数是我们希望调整大小的图像,第二个参数是我们为新图像计算的尺寸。最后一个参数是我们的插值方法,它是在幕后处理我们如何调整实际图像大小的算法。

    最后,我们在第 24 行显示调整后的图像:在这里插入图片描述
    在我们探索的示例中,我们仅通过指定宽度来调整图像的大小。但是如果我们想通过设置高度来调整图像大小呢?所需要的只是更改用于保持纵横比的调整大小比率的计算:在这里插入图片描述
    在第 28 行,我们重新定义我们的比率,r. 我们的新图像的高度为 50 像素。为了确定新高度与旧高度的比率,我们将 50 除以旧高度。

    然后,我们定义新图像的尺寸。我们已经知道新图像的高度为 50 像素。新宽度是通过将旧宽度乘以比率获得的,使我们能够保持图像的原始纵横比。

    然后我们在第 32 行执行图像的实际调整大小并在第 33行显示它:在这里插入图片描述
    在这里,我们可以看到我们在保持纵横比的同时,在宽度和高度方面都调整了原始图像的大小。如果我们不保留纵横比,我们的图像看起来会失真。

    调整图像大小很简单,但必须计算纵横比,定义新图像的尺寸,然后执行调整大小需要三行代码。这三行代码虽然看起来并不多,但可以使我们的代码变得非常冗长和混乱。

    相反,我们可以使用 imutils.resize 功能,可自动为我们处理计算和维护宽高比:在这里插入图片描述
    在此示例中,您可以看到单个函数处理图像大小调整: imutils.resize.

    我们传入的第一个参数是 图像我们想调整大小。然后,我们指定关键字参数宽度,这是我们新图像的目标宽度。然后该函数为我们处理调整大小:在这里插入图片描述
    当然,我们也可以通过将函数调用更改为:在这里插入图片描述
    在这里插入图片描述
    请注意,我们的输出调整大小的图像现在明显小于原始图像,但纵横比仍然保持不变。

    3.比较 OpenCV 插值方法

    到目前为止,我们只使用了 cv2.INTER_AREA插值方法。正如我在本文开头提到的,插值函数的目标是检查像素的邻域并使用这些邻域在不引入失真(或至少尽可能少的失真)的情况下以光学方式增加或减小图像的大小。

    第一种方法是最近邻插值,由 cv2.INTER_NEAREST 。这种方法是最简单的插值方法。这种方法不是计算相邻像素的加权平均值或应用复杂的规则,而是简单地找到“最近”的相邻像素并假设强度值。尽管此方法既快速又简单,但调整大小后的图像质量往往相对较差,并可能导致“块状”伪像。

    其次,我们有 cv2.INTER_LINEAR方法,它执行双线性插值——这是 OpenCV 在调整图像大小时默认使用的方法。双线性插值背后的一般思想可以在任何小学数学教科书中找到——斜率截距形式:

    y = mx + b

    显然,我概括了很多。尽管如此,我们要做的不仅仅是找到“最近的”像素并假设它的值(如最近邻插值)。我们现在取相邻像素并使用该邻域来计算插值(而不是仅假设最近的像素值)。

    第三,我们有 cv2.INTER_AREA插值法。对该方法的工作原理进行全面审查超出了本教程的范围。不过,我建议您阅读这篇文章,它提供了此方法的一般系数规则的高级概述。

    最后,我们有 cv2.INTER_CUBIC 和 cv2.INTER_LANCZOS4.

    这些方法速度较慢(因为它们不再使用简单的线性插值,而是使用样条)并在方形像素邻域上使用双三次插值。

    这 cv2.INTER_CUBIC该方法在4 x 4像素的邻居上运行,并且cv2.INTER_LANCZOS4超过8 x 8像素的邻域。一般来说,我很少看到cv2.INTER_LANCZOS4 实践中使用的方法。

    既然我们已经讨论了 OpenCV 提供的插值方法,让我们编写一些代码来测试它们:

    在这里插入图片描述
    我们首先在第45-50行定义插值方法列表。

    从那里开始,我们遍历每种插值方法,并在第57和58行上调整图像的大小(向上采样,使其比原始图像大3倍)。

    然后调整大小的结果显示在我们的屏幕上的第 60 行。

    我们来看看最近邻插值的输出:在这里插入图片描述
    块状工件又回来了。据我所知,cv2.INTER_AREA 表现非常相似 cv2.INTER_NEAREST.

    然后我们继续进行双三次插值在这里插入图片描述
    双三次插值进一步消除了块状伪影。

    最后, cv2.LANCOSZ4 方法,这似乎与双三次方法非常相似:在这里插入图片描述

    4.OpenCV 图像大小调整结果

    要使用 OpenCV 调整图像大小,请务必访问本教程的“下载”部分以检索源代码和示例图像。

    我们已经审查了我们的结果 opencv_resize.py 脚本,但如果您想通过终端执行此脚本,只需使用以下命令:在这里插入图片描述

    三、代码下载

    下载.

    展开全文
  • cv2使用时间不长,遇到了一些坑。 在使用cv2.imread读取RGB图像时,得到的array的shape是(高,宽,(B,G,R)),...在使用cv2.resize时,第二个参数是输出图形的宽和高,即(宽,高),与其他的又不一样。。。WTF :)

    cv2使用时间不长,遇到了一些坑。

    在使用cv2.imread读取RGB图像时,得到的array的shape是(高,宽,(B,G,R)),最后的颜色顺序与matplotlib等库不一样。

    在使用cv2.resize时,第二个参数是输出图形的宽和高,即(宽,高),与其他的又不一样。。。WTF :)

    展开全文
  • ret = cv2.resize(img, (w_, h_), interpolation=cv2.INTER_NEAREST) 对应的参数指的是(输入图像,输出图像大小,缩放时的插值方式、这里是最近邻插值) 2.cv2.copyMakeBorder的用法 ...
  • cv2.imread()及cv2.resize() 参数详解

    千次阅读 2019-12-04 22:29:14
    cv2.imread(filename, flags=None) —— 读取图像。各参数释义: filename: 表示要读取的文件路径(可以是相对路径也可以是相对路径) flags: 表示读取方式,有以下三种: flags 选项 读取方式 cv2.IMREAD...
  • cv2.resize 输入参数 宽*高*通道数

    千次阅读 2019-03-03 21:48:12
    使用cv2.resize时,参数输入是宽×高×通道,与以往操作不同,需要注意。具体参见 https://blog.csdn.net/jningwei/article/details/76019940
  • 2.图像缩放:cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None) 3.图像旋转变换矩阵:M=cv2.getRotationMatrix2D(center,angle,scale) 4.图像仿射变换:M=cv2.getAffineTrans.
  • 1. 改变图像的大小-cv2.resize() 函数原型:cv2.resize(src, dst, Size, fx, fy, interpolation) 参数说明:1. src 输入图片 2. dst 输出图片 3.size 输出图片的大小 4. fx、fy:沿水平轴、垂直轴的缩放因子(宽度、...
  • opencv: 图像缩放(cv2.resize)

    万次阅读 多人点赞 2017-10-12 19:43:02
    cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst interpolation 选项 所用的插值方法 INTER_NEAREST 最近邻插值 INTER_LINEAR 双线性插值(默认设置) INTER_AREA 使用...
  • 主要介绍了python cv2.resize函数high和width注意事项说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • CV2.resize()详解

    千次阅读 2019-01-18 11:28:51
    cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None) scr:原图 dsize:输出图像尺寸 fx:沿水平轴的比例因子 fy:沿垂直轴的比例因子 interpolation:插值方法 例子: im = cv2.resize(im, self....
  • Python-OpenCV之图片缩放(cv2.resize

    万次阅读 多人点赞 2018-10-21 02:43:20
    cv2.resize(InputArray src, OutputArray dst, Size,fx, fy, interpolation) 参数解释: InputArray src 输入图片 OutputArray dst 输出图片 Size 输出图片尺寸 fx, fy 沿x轴,y轴的缩放系数 ...
  • PIL.Image.resize Image.resize(size, resample=0)[source] ''' Returns a resized copy of this image. 参数: size – The requested size in pixels, as a 2-tuple: (width, height). resample – An optional ...
  • Python-Opencv中图像融合[ cv2.addWeighted( ) 和 cv2.resize( ) 的应用 ] 在图像处理中,可以将两张图片可以通过cv2.addWeighted( )按权重进行融合【注意:两张图片必须是相同shape才行,这就涉及到用cv2.resize( )...
  • cv2.resize()原理详解

    千次阅读 2021-01-23 22:35:06
    1、cv2.resize函数说明 resize是opencv库中的一个函数,主要起到对图片进行缩放的作用。 example: 以下代码就可以将原图片转化为宽和长分别为300,300的图片。width和height可以自己任意指定,不论大小。 ...
  • 【opencv-python】 cv2.resize缩放图像1.背景2.参数3.示例4.说明 1.背景 在图像预处理过程中经常会用到图像缩放。 以及在Pyqt5、PySide2等GUI界面显示的时候,也会用到图像缩放。 cv2的缩放图像的接口: cv2.resize...
  • 第一个参数:width,height, 需要把入参图片image,resize之后的宽,高 第二个参数: Image.NEAREST :低质量 Image.BILINEAR:双线性 Image.BICUBIC :三次样条插值 Image.ANTIALIAS:高质量 上面是单张图片尺寸的...
  • python cv2.resize 重置图像大小

    千次阅读 2020-02-27 15:47:10
    python cv2缩放图片:cv2.resize()。 参考[https://www.cnblogs.com/jyxbk/p/7651241.html] import cv2 img = cv2.imread("lena.jpg", -1) height, width = img.shape[:2] # 缩小图像 size = (int(width*0.5...
  • 我写这篇文章目的是记录图片分辨率不变情况下,只调节窗口尺寸,以防失真。 Opencv 读、显示、存操作 cv.imread() # 读入图片 ... cv2.IMREAD_COLOR : 读入彩色图片,任何与透明度相关通道的会被忽视,默认以这种方...
  • 【题目】cv2.resize图像缩放函数的使用 目录 一、概述 二、语法 三、各种内插选项的效果展示 一、概述 cv2,resize用于对图像进行尺度缩放,可以使用各种内插方法进行处理。 二、语法  cv2.resize(src, ...
  • 问题cv2.resize()报错

    2020-09-22 19:21:35
    一、问题cv2.resize()报错 cv2.error: OpenCV(3.4.3) C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:4044: error: (-215:Assertion failed) !ssize.empty() in function 'cv::resi
  • cv2.resize(InputArray src, OutputArray dst, Size, fx, fy, interpolation) 参数解释: InputArray src 输入图片 OutputArray dst 输出图片 Size 输出图片尺寸 fx, fy 沿x轴,y轴的缩放系数 ...
  •  在Opencv-python中,通过调用cv2.imresize()通过插值的方式来改变图像的尺寸,关于该函数的具体介绍,已经有非常多的博客进行了剖析,这里推荐一个Opencv的Resize函数解析。 cv2.resize()的要点与坑 cv2....
  • img.resize((width, height),Image.ANTIALIAS) 第一个参数:width,height, 表示设置传入图片的宽和高。 第二个参数: Image.NEAREST :低质量 Image.BILINEAR:双线性 Image.BICUBIC :三次样条插值 Image....
  • cv2.resize图像缩放函数的使用

    千次阅读 2019-06-22 23:00:16
    cv2,resize用于对图像进行尺度缩放,可以使用各种内插方法进行处理。 二、语法 cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst interpolation 参数说明: src - 原图 dst - 目标图像。当...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,317
精华内容 8,126
关键字:

cv2.resize()参数