You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中调整输出图像大小及处理模糊检测代码运行问题

嘿,我来帮你搞定这两个问题!

问题1:如何在Python中调整输出图像大小?

在Python里调整图像大小,最常用的就是OpenCV和**Pillow(PIL的分支)**这两个工具,我给你分别拆解具体用法:

方法1:使用OpenCV

OpenCV的cv2.resize()函数灵活度很高,既可以直接指定目标尺寸,也能按比例缩放:

import cv2

# 加载图像
image = cv2.imread("input_image.jpg")

# 方式A:直接设置目标宽高(参数顺序是(width, height))
resized_image = cv2.resize(image, (800, 600))

# 方式B:按比例缩放(比如缩小到原尺寸的50%)
scale_percent = 50
width = int(image.shape[1] * scale_percent / 100)
height = int(image.shape[0] * scale_percent / 100)
dim = (width, height)
# 缩小用INTER_AREA插值更清晰,放大用INTER_CUBIC/INTER_LINEAR效果更好
resized_image = cv2.resize(image, dim, interpolation=cv2.INTER_AREA)

# 保存调整后的图像
cv2.imwrite("resized_image.jpg", resized_image)

方法2:使用Pillow

Pillow的API更直观,适合快速处理:

from PIL import Image

# 加载图像
image = Image.open("input_image.jpg")

# 方式A:指定目标尺寸
resized_image = image.resize((800, 600))

# 方式B:按比例缩放
width, height = image.size
new_width = int(width * 0.5)
new_height = int(height * 0.5)
resized_image = image.resize((new_width, new_height))

# 保存图像
resized_image.save("resized_image_pillow.jpg")

问题2:关于Python模糊检测代码的常见问题与解决

你用的是基于拉普拉斯方差的经典模糊检测方案,先把你没写完的代码补全,再聊聊容易踩的坑:

完整可运行的代码示例

from imutils import paths
import argparse
import cv2

def variance_of_laplacian(image):
    # 计算图像拉普拉斯算子的方差,方差越小图像越模糊
    return cv2.Laplacian(image, cv2.CV_64F).var()

# 解析命令行参数(如果不需要命令行,直接写死图像路径也可以)
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--images", required=True, help="图像文件夹路径")
ap.add_argument("-t", "--threshold", type=float, default=100.0, help="低于此值的图像会被标记为模糊")
args = vars(ap.parse_args())

# 遍历文件夹里的所有图像
for imagePath in paths.list_images(args["images"]):
    # 加载图像并转为灰度图(必须转灰度,拉普拉斯方差基于灰度图计算)
    image = cv2.imread(imagePath)
    if image is None:
        print(f"无法加载图像:{imagePath}")
        continue
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    fm = variance_of_laplacian(gray)
    text = "Not Blurry"

    # 对比阈值判断是否模糊
    if fm < args["threshold"]:
        text = "Blurry"

    # 在图像上标注结果(可选,用于可视化)
    cv2.putText(image, f"{text}: {fm:.2f}", (10, 30),
        cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 3)
    cv2.imshow("Image", image)
    key = cv2.waitKey(0)

cv2.destroyAllWindows()

常见问题及解决办法

  • 报错找不到imutils库:打开终端运行pip install imutils即可,这是OpenCV的辅助工具库,用来简化图像路径遍历。
  • 图像加载失败(image为None):检查图像文件夹路径是否正确,避免路径里有中文或特殊字符(OpenCV对非ASCII路径支持较差)。
  • 模糊判断不准确:默认阈值100不是通用的,你需要用自己的清晰图像样本计算拉普拉斯方差,取一个合适的下限值作为阈值。
  • 彩色图像直接传入函数出错:拉普拉斯方差必须基于灰度图计算,代码里的cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)这一步绝对不能省。

内容的提问来源于stack exchange,提问作者Abed Nego Lubis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:21:56