如何使用带CUDA支持的OpenCV在Python中实现GPU图像旋转?
基于OpenCV CUDA的图像旋转Python实现
你已经编译好带CUDA支持的OpenCV 4.6.0,直接借助cv2.cuda模块就能实现GPU加速的图像旋转,核心逻辑是将CPU端图像数据上传到GPU完成计算,再把结果回传到CPU进行显示。
完整实现代码如下:
import cv2 # 可选:验证CUDA设备是否正常识别 if cv2.cuda.getCudaEnabledDeviceCount() == 0: print("未检测到可用CUDA设备") exit() # 读取CPU端图像 img = cv2.imread("cat.3.jpg") if img is None: print("无法读取目标图像文件") exit() # 将图像数据上传至GPU,转为GpuMat对象(GPU内存中的数据载体) gpu_img = cv2.cuda.GpuMat() gpu_img.upload(img) # 在GPU上执行90度顺时针旋转,参数与CPU版cv2.rotate完全一致 gpu_rotated = cv2.cuda.rotate(gpu_img, cv2.ROTATE_90_CLOCKWISE) # 将GPU端处理结果下载回CPU内存 rotated_img = gpu_rotated.download() # 显示旋转后的图像 cv2.imshow("cat", rotated_img) cv2.waitKey(0) cv2.destroyAllWindows()
关键细节说明:
GpuMat是OpenCV CUDA模块的核心数据结构,所有GPU加速操作必须基于该对象执行,不能直接使用CPU端的numpy.ndarray(即cv2.imread返回的图像对象)。upload()/download()分别负责CPU与GPU之间的数据拷贝,这两步是跨设备操作的必要环节。- 若需要实现任意角度旋转,可使用
cv2.cuda.warpAffine配合旋转矩阵完成,操作逻辑与CPU端一致,只需将所有数据对象替换为GpuMat即可。
内容的提问来源于stack exchange,提问作者Jonny_92
相关产品推荐
相关产品推荐

