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

求助:卷积运算出现operands could not be broadcast together with shapes错误

图像边缘检测代码报错排查与修复

错误原因

你遇到的ValueError是因为两个卷积结果的尺寸不匹配:

  • 计算conv_im1时用了convolve2d的'same'参数,这个参数会让卷积输出的图像尺寸和输入的gray_image完全一致(也就是(842,474))。
  • 计算conv_im2时没指定mode参数,convolve2d默认用'full'模式,这种模式会保留所有卷积运算的结果,输出的图像尺寸比输入大(也就是(844,476))。

当你执行conv_im1**2 + conv_im2**2时,两个尺寸不一样的数组没法逐元素相加,所以触发报错。

解决方案

让两个卷积操作使用相同的mode参数即可,推荐用'same'模式,这样输出的结果尺寸和原图像一致,后续处理更直观。

修改后的代码

import numpy as np
from skimage.io import imread, imshow
from scipy.signal import convolve2d

family = imread('image.jpg')

gray_image = np.mean(family, axis=2)

kernel1 = np.array([[1, 2, 1],
                    [0, 0, 0],
                    [-1, -2, -1]])

conv_im1 = convolve2d(gray_image, kernel1, 'same')

kernel2 = np.array([[1, 0, -1],
                    [2, 0, -2],
                    [1, 0, -1]])

# 这里加上mode='same',和conv_im1保持一致
conv_im2 = convolve2d(gray_image, kernel2, 'same')
edge_image = np.sqrt(conv_im1**2 + conv_im2**2)

内容的提问来源于stack exchange,提问作者pro100default.net

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:37:07