Opencv的resize( )函数在缩放图像时如何减少图像失真问题 您所在的位置:网站首页 opencv降低图片分辨率 Opencv的resize( )函数在缩放图像时如何减少图像失真问题

Opencv的resize( )函数在缩放图像时如何减少图像失真问题

2023-11-26 12:46| 来源: 网络整理| 查看: 265

【问题发现】一次项目开发中,需要利用Python+Opencv将透明的png图像叠加到jpg图像上,过程中利用了resize( )函数将png图像缩放一定尺寸,叠加后发现png图像轮廓锯齿化严重。发现resize( )的参数设置对图像质量影响较大。

【函数分析】

cv2.resize(img, (w, h), interpolation)

img: 输入图像

w, h: 缩放后的图像尺寸

interpolation: 缩放图像的方法,Opencv提供了5中方法,如下:

cv2.INTER_NEAREST # 最邻近差值法 cv2.INTER_LINEAR # 双线性差值法 cv2.INTER_AREA # 基于局部像素的重采样法 cv2.INTER_CUBIC # 三次差值法 cv2.INTER_LANCZOS4 # 基于8*8像素邻域的Lanczos差值法

本人基于以上5种差值方法,对图像进行缩放,并保存结果图像。运行代码如下:

import cv2 as cv def img_resize(img, scale=0.5, interpolation=cv.INTER_LINEAR): img = cv.resize(img, (int(img.shape[1]*scale), int(img.shape[0]*scale)), interpolation=interpolation) return img if __name__ == '__main__': # 读取图像 img = cv.imread('imgs/origin_img.png') # 利用resize()函数,对图像进行缩放 img_new = img_resize(img, interpolation=cv.INTER_AREA) # 显示图像 cv.imshow('origin', img) cv.imshow('new', img_new) cv.imwrite('imgs/out_imgs/area_img.jpg', img_new) if cv.waitKey(0) & 0xFF == 27: cv.destroyAllWindows()

原始图像如下:

基于5种缩放方法生成的缩放图像如下:

【结论】

经过实验对比发现,cv2.INTER_AREA方法能够最大程度保证图像的缩放质量。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有