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

Python中无需转Numpy对象获取OpenCV UMat形状的方法

在Python中直接获取OpenCV UMat形状的方法

嘿,这个问题问到点子上了!我在做OpenCV GPU加速项目的时候也纠结过这个——来回转UMat和Numpy数组不仅麻烦,还会额外产生内存拷贝,完全没必要。其实UMat本身就提供了原生属性和方法来直接获取形状信息,根本不用转Numpy。

  • 获取行数和列数:直接访问UMat对象的rows和cols属性就行,这两个属性分别对应图像的高度和宽度:

    import cv2
    
    # 创建或加载一个UMat对象(这里以加载图像为例)
    gpu_mat = cv2.imread("your_image.jpg").getUMat(cv2.UMatUsageFlags.USAGE_ALLOCATE_DEVICE_MEMORY)
    
    # 直接获取行列数
    img_height = gpu_mat.rows
    img_width = gpu_mat.cols
    print(f"图像尺寸:{img_height} × {img_width}")
    
  • 获取通道数(针对多通道图像):如果是RGB这类多通道图像,可以用channels()方法获取通道数量,结合上面的行列数就能得到完整的形状(高度、宽度、通道数):

    img_channels = gpu_mat.channels()
    print(f"完整形状:({img_height}, {img_width}, {img_channels})")
    

这些属性和方法都是UMat原生支持的,完全绕开了Numpy转换,能帮你在GPU计算中保持性能优势,尤其是处理大尺寸数据的时候效果更明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:18:35