OpenCV使用CUDA处理图像的教程与实战
小白学视觉
共 4412字,需浏览 9分钟
· 2021-02-06
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
import cv2 as cv
gpu_frame = cv.cuda_GpuMat()
screenshot = cv.imread('media/drip.png')
gpu_frame.upload(screenshot)
gpu_frame.download()
在单张图像上使用
在多张图像上使用
对多张图像使用Dask进行并行延时处理
第1步:上传
import cv2 as cv
gpu_frame = cv.cuda_GpuMat()
screenshot = cv.imread('media/drop.png')
gpu_frame.upload(screenshot)
第2步:处理图像
screenshot = cv.cuda.cvtColor(gpu_frame, cv.COLOR_RGB2BGR)
screenshot = cv.cuda.resize(screenshot, (400, 400))
第3步:下载
screenshot.download()
import cv2 as cv
img_files = ['bear.png', 'drip.png', 'tldr.png', 'frog.png']
# 创建帧来保存图片(cv2.cuda_GpuMat)
gpu_frame = cv.cuda_GpuMat()
for i in range(len(img_files)):
# 加载图像(CPU)
screenshot = cv.imread(f"media/{img_files[i]}")
# 上传到GPU
gpu_frame.upload(screenshot)
# 转换颜色到opencv (numpy) ndarray→cv2.cuda_GpuMat
screenshot = cv.cuda.cvtColor(gpu_frame, cv.COLOR_RGB2BGR)
# 反向阈值@ 100
screenshot = cv.cuda.threshold(screenshot, 105, 255, cv.THRESH_BINARY_INV)
# 调整图像
screenshot = cv.cuda.resize(screenshot[1], (200, 200))
# 从GPU下载图像(cv2) cuda_GpuMat→numpy.ndarray
screenshot = screenshot.download()
import cv2 as cv
import dask.delayed
@dask.delayed
def preprocess(files):
# 复制图像文件
i_files = files.copy()
# 创建GPU帧来保存图像
gpu_frame = cv.cuda_GpuMat()
for i in range(len(i_files)):
# 加载图像(CPU)
screenshot = cv.imread(f'media/{i_files[i]}')
# 上传到GPU
gpu_frame.upload(screenshot)
# 转换颜色到opencv (numpy) ndarray→cv2.cuda_GpuMat
screenshot = cv.cuda.cvtColor(gpu_frame, cv.COLOR_RGB2BGR)
screenshot = cv.cuda.cvtColor(screenshot, cv.COLOR_BGR2GRAY)
# 反向阈值@ 100
screenshot = cv.cuda.threshold(screenshot, 125, 255, cv.THRESH_BINARY)
# 调整图像
screenshot = cv.cuda.resize(screenshot[1], (200, 200))
# 从GPU下载图像 (cv2.cuda_GpuMat -> numpy.ndarray)
screenshot = screenshot.download()
# 用新图像
i_files[i] = screenshot
# 输出预处理图像
return i_files
from dask import compute
img_files = ['bear.png', 'drip.png', 'tldr.png', 'frog.png']
img_files_2 = ['apple.png', 'eye.png', 'window.png', 'blinds.png']
# 设置延迟
set_a = dask.delayed(preprocess)(img_files)
set_b = dask.delayed(preprocess)(img_files_2)
# 开始计算
out_a, out_b = compute(*[set_a, set_b])
进阶阅读:
https://medium.com/dropout-analytics/opencv-cuda-for-videos-f3dcf346e398 https://medium.com/dropout-analytics/pycuda-on-jetson-nano-7990decab299 https://medium.com/dropout-analytics/beginners-guide-to-knn-with-cuml-ddca099f9e9d
参考引用
Koriukina, Valeriia. “Getting Started with OpenCV CUDA Module.” Learn OpenCV, Learnopencv.com, 15 Sept. 2020, learnopencv.com/getting-started-opencv-cuda-modul. McWhorter, Paul. “AI on the Jetson Nano LESSON 10: Installing OpenCV for Python 3.” Paul McWhorter — YouTube, Youtube.com/User/Mcwhorpj, 2 Nov. 2019, youtu.be/3QYayL5y2hk. Pulli, Kari; Baksheev, Anatoly; Kornyakov, Kirill; Eruhimov, Victor. “Realtime Computer Vision with OpenCV.” Realtime Computer Vision with OpenCV — ACM Queue, Association for Computing Machinery, 22 Apr. 2012, queue.acm.org/detail.cfm?id=2206309.
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
评论
盘点Lombok的几个骚操作,你绝对没用过!
👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目正在酝酿中
小哈学Java
0
堪称最优秀的Docker可视化管理工具——Portainer你真的会用吗?
来源:blog.csdn.net/shark_chili3007/article/details/123366179👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目
小哈学Java
0
【深度学习】人人都能看懂的LSTM
熟悉深度学习的朋友知道,LSTM是一种RNN模型,可以方便地处理时间序列数据,在NLP等领域有广泛应用。在看了台大李宏毅教授的深度学习视频后,特别是介绍的第一部分RNN以及LSTM,整个人醍醐灌顶。本文就是对视频的记录加上了一些个人的思考。0. 从RNN说起循环神经网络(Recurrent Neur
机器学习初学者
0
如何计算数据中心的冷却需求?
今日分享 【导读】数据中心的冷却要求受多种因素影响,包括设备的热量输出、占地面积、设施设计和电气系统功率额定值等等……众所周知,环境因素会严重影响数据中心设备。过多的热量积聚会损坏服务器,可能导致其自动关闭。经常在高于可接受的温度下运行服务器会缩短其使用
数据中心运维管理
0
多人同时导出 Excel 干崩服务器!新来的阿里大佬给出的解决方案太优雅了!
点击关注公众号,Java 干货及时推送↓推荐阅读:面试辅导,我们出大成果了!来源:juejin.cn/post/7259249904777838629前言 业务诉求:考虑到数据库数据日渐增多,导出会有全量数据的导出,多人同时导出可以会对服务性能造成影响,导出涉及到mysql查询的io操作,
Java技术栈
1
知乎热议:博士生最好的状态是什么?
链接:https://www.zhihu.com/question/447412618编辑:深度学习与计算机视觉声明:仅做学术分享,侵删作者:JackieLeehttps://www.zhihu.com/question/447412618/answer/2963078772最好状态比较难说,最开心
机器学习初学者
0
什么样的冷却方法适合数据中心运营?
冷却数据中心的最简单方法是安装空气交换器,通过服务器室生成冷空气。但是,如果想要节省资金,至少从长远来看,更好的方法可能是在每个机架上安装空气交换器,并使用它们为单个机架的服务器降温。"后机架冷却",与数据中心中更为传统的空气冷却系统相比,特别是在能源效率方面,其具有一些优势。冷却数据中心的最简单
数据中心运维管理
0
自动化测试做得好的标准是什么
自动化测试要做得好的标准,主要包括以下几个方面:一、高覆盖率与精准定位1、测试用例覆盖全面:自动化测试应覆盖产品的核心功能、关键业务流程以及常见的异常场景,确保测试范围广泛,降低遗漏风险。2、问题定位准确:自动化测试应能够精准地识别并定位问题,包括缺陷的位置、产生的原因以及可能的影响,为开发团队提供
测试开发社区
0