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

如何解决OpenCV运行时报错"Expected cv::UMat for argument 'src'"?

"Expected cv::UMat for argument 'src'"错误解决方案

该错误是cv2.dilate函数接收到的输入图像src不符合OpenCV要求的格式导致的,结合你给出的代码场景,按以下步骤排查解决:

  • 第一步:修正参数名错误
    你的代码中定义结构元素的变量名为kernel_2,但调用膨胀函数时传入的第二个参数是未定义的kernel,先修正调用语句:
    dd = cv2.dilate(src, kernel_2)
    
  • 第二步:校验src的格式合法性
    经K-means聚类输出的结果通常为float类型的标签矩阵,不符合OpenCV形态学操作要求的uint8/uint16等整数图像格式,需要先做格式转换:
    # 假设n_clusters是你设置的K-means聚类类别数
    src = (cluster_result * (255 / n_clusters)).astype(np.uint8)
    
    可以加打印语句校验格式是否正确:
    print(src.shape, src.dtype)
    # 正常输出应该类似 (512,512) uint8,不允许为None或者float类数值类型
    
  • 第三步:兼容UMat格式转换
    如果上述修改后仍报错,可以手动将numpy数组转换为OpenCV的UMat格式再传入函数:
    src_umat = cv2.UMat(src)
    dd = cv2.dilate(src_umat, kernel_2)
    # 后续处理需要转回numpy数组的话调用get方法
    dd_np = dd.get()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:06:03