【1】引言
前序我们已经学习图像的基本读取操作,文章链接为:
python学opencv|读取图像-CSDN博客
也掌握了彩色图像的保存:
python学opencv|读取图像(二)保存彩色图像_python opencv 读取图像转为彩色-CSDN博客
以及图像的放大和缩小:
python学opencv|读取图像(三)放大和缩小图像_python cv 调整图像大小-CSDN博客
在此基础上,我们也许会想到,调整图像大小如何做到精准控制,比如就想把图像的长宽做成一样大,此时该如何设置各个方向上的像素放大或者缩小因子?
带着这个目标,我们一起学习今天的内容。
【2】方法论
要想精准控制图片的像素,最基本的是先知道原始图片的像素。
在前述学习进程中,我们恰好知道了如何获取图片像素:
python学opencv|读取图像(五)读取灰度图像像素-CSDN博客
在此基础上,我们就可以灵活设置放大或者缩小因子,实现图片优化目标。
【3】代码测试
以python学opencv|读取图像(三)放大和缩小图像_python cv 调整图像大小-CSDN博客
文章的代码wield基础,使用的图片名为cv.png。
原始代码和图片如下:
import cv2 # 引入CV模块
# 读取图片
image = cv2.imread('cv.png')
# 定义放大因子
scale_factor = 0.5
# 放大图片,使用立方插值
scaled_image = cv2.resize(image, None, fx=scale_factor, fy=scale_factor, interpolation=cv2.INTER_CUBIC) # INTER_CUBIC插值
# 保存结果
cv2.imwrite('scaled_cv-22-INTER_CUBIC.png', scaled_image)
# 显示结果
cv2.imshow('Scaled Image', scaled_image)
cv2.waitKey( )
cv2.destroyAllWindows()
图1
添加一行代码同时显示改后的图片:
cv2.imshow('Image', image)
运行后的效果为:
图2
此时的完整代码为:
import cv2 # 引入CV模块
# 读取图片
image = cv2.imread('cv.png')
# 定义放大因子
scale_factor = 0.5
# 放大图片,使用立方插值
scaled_image = cv2.resize(image, None, fx=scale_factor, fy=scale_factor, interpolation=cv2.INTER_CUBIC) # INTER_CUBIC插值
# 保存结果
cv2.imwrite('scaled_cv-22-INTER_CUBIC.png', scaled_image)
# 显示结果
cv2.imshow('Scaled Image', scaled_image)
cv2.imshow('Image', image)
cv2.waitKey( )
cv2.destroyAllWindows()
以此为例,按需设置放大和缩小因子,可实现自由优化图片大小。
【4】总结
掌握了不知道像素条件下,自由优化图片大小的方法。