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

使用二进制掩码裁剪OpenCV图像出现New_image未定义错误如何解决

代码错误说明
  • 核心错误:New_image是crop函数内部的局部变量,仅在函数内部作用域有效,你没有调用crop函数,也没有在全局作用域定义该变量,因此触发未定义报错。
  • 隐藏错误:matplotlib导入写法错误,要使用imshow方法需要导入pyplot子模块,原写法后续调用plt.imshow也会报错。
修正后的完整代码
import cv2
import numpy as np
import matplotlib.pyplot as plt # 修正导入错误

img = cv2.imread("image.png")
mask = cv2.imread("mask.png")
h, w, _ = img.shape
mask = cv2.resize(cv2.cvtColor(mask, cv2.COLOR_BGR2GRAY), (w, h))
bg = np.zeros_like(img, 'uint8')

def crop(img, bg, mask):
    fg = cv2.bitwise_or(img, img, mask=mask)
    fg_back_inv = cv2.bitwise_or(bg, bg, mask=cv2.bitwise_not(mask))
    New_image = cv2.bitwise_or(fg, fg_back_inv)
    return New_image

# 调用crop函数,将返回值赋值给全局变量New_image
New_image = crop(img, bg, mask)

plt.imshow(cv2.cvtColor(New_image, cv2.COLOR_BGR2RGB))
plt.show() # 新增该行以显示图像窗口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:06:03