python-opencv resize() (讲解+批量改变图像大小示例)

这篇具有很好参考价值的文章主要介绍了python-opencv resize() (讲解+批量改变图像大小示例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

python-opencv resize()的使用(讲解+批量改变图像大小示例)


cv2.resize()

定义:

void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR );

或者也可以:

cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst 

src:原图像;
dst:改变大小的目标图像;
dsize:输出图像的大小。

fx:width方向的缩放比例;
fy:height方向的缩放比例;

interpolation:指定插值的方式,图像resize之后,像素要重新计算,靠这个参数来指定重新计算像素的方式,有以下几种:
      INTER_NEAREST - 最邻近插值
      INTER_LINEAR - 双线性插值,如果最后一个参数你不指定,默认使用这种方法
      INTER_AREA -区域插值
      INTER_CUBIC - 4x4像素邻域内的双立方插值
      INTER_LANCZOS4 - 8x8像素邻域内的Lanczos插值

要注意:dsize和fx/fy不能同时为0,
要么
一、指定dsize的值,让fx和fy直接省略或置0,比如
resize(img, imgDst, (512,512));
如果fx是0,它按照(double)dsize.width/src.cols来计算;
如果fy是0,它按照(double)dsize.height/src.rows来计算;
要么,
二、dsize=None或置0,指定fx和fy的值,(dsize不可省略,会报错),比如
resize(img, (0,0), fx=0.5,fy=0.5);
此时,原图像resize后的大小为:
dsize = Size(round(fxsrc.cols), round(fysrc.rows))

来自中文文档的例子:

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()

又要注意了
img = cv2.imread(‘test.jpg’)
图像的size=(h,w)
resize的操作是先w,再h

另一个例子:文章来源地址https://www.toymoban.com/news/detail-626111.html

im = cv2.resize(im, self.resize_h_w[::-1], interpolation=cv2.INTER_LINEAR)
#self.resize_h_w[::-1]这里应该是将h和w数组的值反过来。这里采用的线性插值。

批量缩放图片大小:

import os
import cv2


def resize_img(DATADIR, data_k, img_size):
    w = img_size[0]
    h = img_size[1]
    path = os.path.join(DATADIR, data_k)
    # 返回path路径下所有文件的名字,以及文件夹的名字,
    img_list = os.listdir(path)#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。

    for i in img_list:
        if i.endswith('.jpg'):#判断图片名称是否以".jpg"结尾
            # 调用cv2.imread读入图片,读入格式为IMREAD_COLOR
            img_array = cv2.imread((path + '/' + i), cv2.IMREAD_COLOR)
            # 调用cv2.resize函数resize图片
            new_array = cv2.resize(img_array, (w, h), interpolation=cv2.INTER_CUBIC)
            img_name = str(i)
            '''生成图片存储的目标路径'''
            save_path = path + 'CLPD_1200_new/'
            if os.path.exists(save_path):
                print(i)
                '''调用cv.2的imwrite函数保存图片'''
                save_img = save_path + img_name
                cv2.imwrite(save_img, new_array)
            else:
                os.mkdir(save_path)
                save_img = save_path + img_name
                cv2.imwrite(save_img, new_array)


if __name__ == '__main__':
    # 设置图片路径
    DATADIR = "C:/Users/User/Desktop/"
    data_k = 'CLPD_1200'
    '''设置目标像素大小,此处设为512 * 512'''
    img_size = [512, 512]
    resize_img(DATADIR, data_k, img_size)

到了这里,关于python-opencv resize() (讲解+批量改变图像大小示例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python-OpenCV中的图像处理-图像阀值

    与名字一样,这种方法非常简单。但像素值高于阈值时,我们给这个像素赋予一个新值(可能是白色),否则我们给它赋予另外一种颜色(也许是黑色)。这个函数就是 cv2.threshhold()。这个函数的第一个参数就是原图像,原图像应该是灰度图。第二个参数就是用来对像素值进

    2024年02月13日
    浏览(48)
  • Python-Opencv图像处理的小坑

            最近在做一点图像处理的事情,在做处理时的cv2遇到一些小坑,希望大家遇到的相关的问题可以注意!!           cv2.imwrite(filename, img, [params]) filename :需要写入的文件名,包括路径和文件名,以及期望的扩展名(例如,.jpg,.png,.bmp等)。 img :需要保存的

    2024年02月04日
    浏览(51)
  • python-openCV—入门到精通系列讲解(配效果图)- 总览

    python-openCV是一种强大的计算机视觉库,可用于处理图像和视频等多媒体数据。它可以帮助您快速处理和分析图像和视频数据,并且在计算机视觉领域具有广泛的应用。在学习python-openCV时,一个速查手册是一个必不可少的工具。 你可以当本专栏当做一个速查手册,可以看到每

    2024年02月14日
    浏览(47)
  • Python-OpenCV中的图像处理-图像直方图

    通过直方图你可以对整幅图像的灰度分布有一个整体的了解。直方图的 x 轴是灰度值( 0 到 255), y 轴是图片中具有同一个灰度的点的数目。 BINS:上面的直方图显示了每个灰度值对应的像素数。如果像素值为 0到255,你就需要 256 个数来显示上面的直方图。但是,如果你不需

    2024年02月12日
    浏览(68)
  • Python-OpenCV中的图像处理-图像金字塔

    同一图像的不同分辨率的子图集合,如果把最大的图像放在底部,最小的放在顶部,看起来像一座金字塔,故而得名图像金字塔。 cv2.pyrUp():上采样 cv2.pyrDown():下采样 高斯金字塔的顶部是通过将底部图像中的连续的行和列去除得到的。顶部图像中的每个像素值等于下一层图

    2024年02月13日
    浏览(61)
  • Python OpenCV 图像缩放:使用 cv2.resize() 方法

    图像缩放是计算机视觉和图像处理中常用的操作之一。OpenCV 是一个强大的计算机视觉库,提供了许多图像处理功能。在 Python 中使用 OpenCV 进行图像缩放非常简单,可以使用 cv2.resize() 方法来实现。 cv2.resize() 方法可以根据指定的尺寸调整图像的大小。它可以缩小图像,也可以

    2024年02月02日
    浏览(57)
  • Python-OpenCV中的图像处理-霍夫变换

    霍夫(Hough)变换在检测各种形状的技术中非常流行,如果要检测的形状可以用数学表达式描述,就可以是使用霍夫变换检测它。即使要检测的形状存在一点破坏或者扭曲也是可以使用。 Hough直线变换,可以检测一张图像中的直线 cv2.HoughLines(image, rho, theta, threshold) return:返回值

    2024年02月13日
    浏览(58)
  • Python-OpenCV中的图像处理-几何变换

    对图像进行各种几个变换,例如移动,旋转,仿射变换等。 cv2.resize() cv2.INTER_AREA v2.INTER_CUBIC v2.INTER_LINEAR res = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC) 或 height, width = img.shape[:2] res = cv2.resize(img, (2 width, 2 height), interpolation=cv2.INTER_CUBIC) OpenCV提供了使用函数cv2.warpAffine()实

    2024年02月13日
    浏览(87)
  • Python-OpenCV中的图像处理-边缘检测

    Canny 边缘检测是一种非常流行的边缘检测算法,是 John F.Canny 在 1986 年提出的。它是一个有很多步构成的算法:噪声去除、计算图像梯度、非极大值抑制、滞后阀值等。 Canny(image: Mat, threshold1, threshold2, edges=…, apertureSize=…, L2gradient=…) 在 OpenCV 中只需要一个函数: cv2.Canny(),

    2024年02月13日
    浏览(54)
  • Python-OpenCV中的图像处理-物体跟踪

    现在我们知道怎样将一幅图像从 BGR 转换到 HSV 了,我们可以利用这一点来提取带有某个特定颜色的物体。在 HSV 颜色空间中要比在 BGR 空间中更容易表示一个特定颜色。在我们的程序中,我们要提取的是一个蓝色的物体。下面就是就是我们要做的几步: • 从视频中获取每一帧

    2024年02月13日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包