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

调用cv2.bitwise_and生成图像掩码触发-215断言失败错误如何解决

报错原因分析
  • 尺寸不匹配:调用cv2.bitwise_and时,输入的待处理图像c已经被resize为(480, 380)的尺寸,但用作mask的r是从原始尺寸的image中拆分出来的R通道,二者尺寸不一致,触发了报错中的_mask.sameSize(*psrc1)校验失败。
  • 冗余代码导致逻辑混乱:代码中第一个双层for循环没有任何实际作用,仅在反复给b、g、r变量重复赋值,既浪费运行性能,也容易干扰对图像尺寸的判断。
修复方案

核心逻辑是保证mask和待处理图像的尺寸完全对齐,同时简化冗余操作提升运行效率,推荐优先对原图做统一resize后再拆分通道处理,修正后代码如下:

import cv2

image = cv2.imread("CoralImgs/Original.png")
# 先统一resize到目标尺寸,避免后续尺寸不匹配
c = cv2.resize(image, (480, 380), interpolation=cv2.INTER_AREA)
# 直接拆分resize后图像的BGR通道,无需冗余循环
b, g, r = cv2.split(c)

# 用numpy布尔索引替代双层for循环修改像素,效率提升数十倍
r[r < 170] = 0

# 此时r和c尺寸完全一致,可正常调用bitwise_and
mask_b = cv2.bitwise_and(c, c, mask=r)

cv2.imshow("r", r)
cv2.imshow("mask_result", mask_b)
cv2.waitKey(0)
cv2.destroyAllWindows()
注意事项
  • cv2.resize的输入参数顺序是(宽, 高),对应图像shape属性的(高, 宽),拆分通道后的单通道图尺寸和原多通道图的高宽完全一致,无需额外调整。
  • OpenCV要求mask必须是单通道8位整型(CV_8U/CV_8S)格式,本次场景中从BGR拆分出的R通道本身符合格式要求,无需额外转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 14:24:03