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
相关产品推荐
相关产品推荐

