Python Pillow(PIL 第三方模块)和 cv2 (opencv第三方模块)对图片的 resize 操作 (缩放图片大小)

PIL 模块的 resize  操作:

 

 

1.  从文件中读取图片,然后  resize  大小:

复制代码
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image

img=Image.open(r"1.jpg")
print("原图的height,weight分别为:", np.asarray(img).shape[:2])
plt.imshow(np.asarray(img))
plt.show()

height, weight = (np.asarray(img).shape)[:2]
height = height//10
weight = weight//10
img2 = Image.Image.resize(img, (weight, height))
print("resized后图的height,weight分别为:", np.asarray(img2).shape[:2])
plt.imshow(np.asarray(img2))
plt.show()
复制代码

 

 

 

 

 

2.  从字节码(Bytes)中读取图片,然后  resize  大小:

复制代码
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
from io import BytesIO


img = open("1.jpg", "rb").read()   #读取序列化的二进制码
img = BytesIO( img )
img = Image.open( img )
print("原图的height,weight分别为:", np.asarray(img).shape[:2])
plt.imshow(np.asarray(img))
plt.show()

height, weight = (np.asarray(img).shape)[:2]
height = height//10
weight = weight//10
img2 = Image.Image.resize(img, (weight, height))
print("resized后图的height,weight分别为:", np.asarray(img2).shape[:2])
plt.imshow(np.asarray(img2))
plt.show()
复制代码

 

 

 

---------------------------------------------------

 

 

 

 

CV2 模块的 resize  操作:

 

 

 

读入图像

使用函数cv2.imread()来读取图像。图像应该在工作目录中,或者应该给出图像的完整路径。

imread(filename[, flags]) -> retval

函数imread从指定文件加载图像并返回一个numpy.ndarray对象类型像素值。 如果图像无法读取(由于文件丢失,权限不当,格式不受支持或格式无效),函数返回一个空矩阵

第二个参数是一个标志,用于指定应读取图像的方式。

  • cv2.IMREAD_COLOR:加载彩色图像。图像的任何透明度都将被忽略。这是默认标志。 flags=1
  • cv2.IMREAD_GRAYSCALE:以灰度模式加载图像 flags=0
  • cv2.IMREAD_UNCHANGED:加载包含Alpha通道的图像 flags=-1

 

注意

而不是这三个标志,你可以简单地传递整数1,0或-1。

 

取自于:  https://blog.csdn.net/hubingshabi/article/details/80144706

 

 

 

CV2 读取图片,  CV2展示图片:

复制代码
import matplotlib.pyplot as plt
import numpy as np
import cv2
# rgb图
img=cv2.imread(r"1.jpg", 1)
# 灰度图
#img=cv2.imread(r"1.jpg", 0)

print("原图的height,weight分别为:", np.asarray(img).shape[:2])
#plt.imshow(np.asarray(img))
#plt.show()
cv2.imshow("img", mat=img)
cv2.waitKey (0)


height, weight = (img.shape)[:2]
height = height//3
weight = weight//3
img2 = cv2.resize(img, (weight, height))
print("resized后图的height,weight分别为:", img2.shape[:2])
#plt.imshow(np.asarray(img2))
#plt.show()
cv2.imshow("img2", mat=img2)
cv2.waitKey (0)
cv2.destroyAllWindows()
复制代码

 

 

 

 

CV2 读取图片,  matplotlib展示图片:   把cv2的bgr转换为rgb,然后展示。       [...,::-1]

复制代码
import matplotlib.pyplot as plt
import numpy as np
import cv2
# rgb图
img=cv2.imread(r"1.jpg", 1)
# 灰度图
#img=cv2.imread(r"1.jpg", 0)

print("原图的height,weight分别为:", np.asarray(img).shape[:2])
plt.imshow(np.asarray(img)[...,::-1])
plt.show()


height, weight = (img.shape)[:2]
height = height//3
weight = weight//3
img2 = cv2.resize(img, (weight, height))
print("resized后图的height,weight分别为:", img2.shape[:2])
plt.imshow(np.asarray(img2)[...,::-1])
plt.show()
复制代码

 

 

 

-----------------------------------------------------------------

 

 

参考网址:

https://blog.csdn.net/sinat_26917383/article/details/78559709

https://blog.csdn.net/hubingshabi/article/details/80144706

 

 

----------------------------

 

 

 

 

 1.jpg

 

 

注:上面的代码均使用该图片(1.jpg)做测试。

 

 

 

 

--------------------------------

 

posted on   Angry_Panda  阅读(1560)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示