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

Python中cv2.resize与np.sum报错问题求助

问题分析与解决方案

核心原因

所有错误的根源是**cv2.imread未成功读取到图片,返回了None**,导致后续数组操作全部失效:

  • cv2.resize报错是因为传入的src是None,不是有效的图像数组;
  • AxisError是因为None转成numpy数组后是0维的,无法对axis=2执行求和操作。

解决步骤

  1. 修复图片路径
    Windows路径中的反斜杠\是转义字符(比如\U会被解析为Unicode转义),必须做以下处理之一:

    • 使用原始字符串:在路径前加r,示例:r'C:\Users\WaWa\Jupyter-Demo\images\hexagon.jpg'
    • 转义反斜杠:把\改成\\,示例:'C:\\Users\\WaWa\\Jupyter-Demo\\images\\hexagon.jpg'
    • 改用正斜杠:把\改成/,示例:'C:/Users/WaWa/Jupyter-Demo/images/hexagon.jpg'
  2. 添加读取验证
    读取图片后立即检查是否成功,避免后续无效操作:

import cv2
import numpy as np
import pint
u = pint.UnitRegistry()

# 修复后的路径
img_path = r'C:\Users\WaWa\Jupyter-Demo\images\hexagon.jpg'
img = cv2.imread(img_path)

# 验证读取结果
if img is None:
    raise ValueError(f"无法读取图片,请检查路径:{img_path}")

# 后续正常操作
img = np.pad(img, 200, mode='constant')
img = cv2.resize(img, dsize=(1600, 1600), interpolation=cv2.INTER_CUBIC)
U0 = np.array(img).sum(axis=2).astype(float)

lam1 = 400*u.nm
lam2 = 500*u.nm
lam3 = 600*u.nm
lam4 = 700*u.nm

x = np.linspace(-2,2,U0.shape[0]) * u.mm
xv, yv = np.meshgrid(x, x)

# 执行自定义计算函数
U_new1 = compute_U(U0, xv, yv, lam=lam1, z=6*u.cm)
U_new2 = compute_U(U0, xv, yv, lam=lam2, z=6*u.cm)
U_new3 = compute_U(U0, xv, yv, lam=lam3, z=6*u.cm)
U_new4 = compute_U(U0, xv, yv, lam=lam4, z=6*u.cm)
  1. 额外排查点
  • 确认图片文件确实存在于指定路径,文件名(包括大小写)完全匹配;
  • 检查当前程序是否有读取该文件的权限;
  • 确认图片格式为OpenCV支持的类型(如jpg、png等)。

内容的提问来源于stack exchange,提问作者user22058539

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:30:28