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

使用cv2.dilate报错TypeError: Expected Ptr<cv::UMat> for argument 'src'如何解决

问题诱因

  • 第一个报错的核心原因是你对cv2.threshold的返回值处理错误:该函数会返回一个二元组,第一个元素是本次计算使用的阈值数值,第二个元素才是二值化处理后的图像矩阵。你直接将完整元组赋值给thresh变量后传给cv2.dilate,参数类型不匹配自然会触发Expected Ptr<cv::UMat> for argument 'src'报错。
  • 后续你尝试用cv2.UMat(thresh)做类型转换时的报错,本质是上一步错误的衍生:thresh此时是元组而非合法的图像数组,cv2.UMat无法识别该输入类型,才会误判你缺少构造参数触发新报错,这个类型转换操作本身完全没有必要。

解决方法

你只需要修改cv2.threshold的取值逻辑,单独取出第二个返回的图像矩阵即可,修正后的代码如下:

frameDelta = cv2.absdiff(firstFrame, gray)
cv2.imshow("frameDelta",frameDelta)
# 用下划线占位接收不需要的阈值返回值,仅取第二个返回的二值化图像
_, thresh = cv2.threshold(frameDelta, 25, 255, cv2.THRESH_BINARY)
thresh = cv2.dilate(thresh, None, iterations = 2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 05:15:03