教程與實(shí)戰(zhàn):OpenCV使用CUDA處理圖像
import cv2 as cv
gpu_frame = cv.cuda_GpuMat()
screenshot = cv.imread('media/drip.png')
gpu_frame.upload(screenshot)
gpu_frame.download()
概述在單張圖像上使用在多張圖像上使用對(duì)多張圖像使用Dask進(jìn)行并行延時(shí)處理在單張圖像上使用我們需要?jiǎng)?chuàng)建GPU空間(GPU_frame)來(lái)保存圖像(就像相框保存圖片一樣),然后才能將圖像上傳到GPU。第1步:上傳import cv2 as cv
gpu_frame = cv.cuda_GpuMat()
接下來(lái)用CPU將圖像加載到內(nèi)存中(截圖),并將其上傳到gpu上(幀圖像);screenshot = cv.imread('media/drop.png')
gpu_frame.upload(screenshot)
第2步:處理圖像OpenCV CUDA函數(shù)返回cv2.cuda_GpuMat(GPU矩陣),因此每個(gè)結(jié)果都可以在用戶不必重新上傳的情況下進(jìn)行操作。讓我們把圖像從RGB轉(zhuǎn)換成BGR(OpenCV格式),然后調(diào)整大小;screenshot = cv.cuda.cvtColor(gpu_frame, cv.COLOR_RGB2BGR)
screenshot = cv.cuda.resize(screenshot, (400, 400))
注意:你調(diào)用的函數(shù)的第一個(gè)參數(shù)應(yīng)該是GPU矩陣(GPU幀),而不是你剛剛上傳的圖像,這會(huì)返回一個(gè)新的GPU矩陣。原始的GPU矩陣(gpu_frame)將繼續(xù)保存原始圖像,直到新圖像被上傳。第3步:下載處理之后的圖像在GPU上,我們需要把它下載回CPU;screenshot.download()
注意:.download()將從cv轉(zhuǎn)換為圖像,即從cuda_GpuMat到 numpy.ndarray。在多張圖像上使用如果需要處理新圖片,只需調(diào)用.upload()將新圖片加載到現(xiàn)有的GPU矩陣中。圖像在傳遞給GPU之前仍然必須加載到CPU上。import cv2 as cv
img_files = ['bear.png', 'drip.png', 'tldr.png', 'frog.png']
# 創(chuàng)建幀來(lái)保存圖片(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)
# 轉(zhuǎn)換顏色到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)
# 調(diào)整圖像
screenshot = cv.cuda.resize(screenshot[1], (200, 200))
# 從GPU下載圖像(cv2) cuda_GpuMat→numpy.ndarray
screenshot = screenshot.download()
這一次我們?cè)陬A(yù)處理中添加了一個(gè)反向的binary.threshold()函數(shù);
對(duì)多張圖像使用Dask進(jìn)行并行延時(shí)處理使用Dask延時(shí),我們可以將上面的循環(huán)推入到Dask延時(shí)函數(shù),并行預(yù)處理多張圖。import cv2 as cv
import dask.delayed
@dask.delayed
def preprocess(files):
# 復(fù)制圖像文件
i_files = files.copy()
# 創(chuàng)建GPU幀來(lái)保存圖像
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)
# 轉(zhuǎn)換顏色到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)
# 調(diào)整圖像
screenshot = cv.cuda.resize(screenshot[1], (200, 200))
# 從GPU下載圖像 (cv2.cuda_GpuMat -> numpy.ndarray)
screenshot = screenshot.download()
# 用新圖像
i_files[i] = screenshot
# 輸出預(yù)處理圖像
return i_files
添加了另一個(gè).cvtColor()來(lái)灰度化圖像,并將反轉(zhuǎn)的二進(jìn)制閾值切換為二進(jìn)制閾值。我們現(xiàn)在可以使用compute()來(lái)進(jìn)行計(jì)算了;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']
# 設(shè)置延遲
set_a = dask.delayed(preprocess)(img_files)
set_b = dask.delayed(preprocess)(img_files_2)
# 開始計(jì)算
out_a, out_b = compute(*[set_a, set_b])
結(jié)果

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
圖片新聞
-
馬云重返一線督戰(zhàn),阿里重啟創(chuàng)始人模式
-
機(jī)器人奧運(yùn)會(huì)戰(zhàn)報(bào):宇樹機(jī)器人摘下首金,天工Ultra搶走首位“百米飛人”
-
存儲(chǔ)圈掐架!江波龍起訴佰維,索賠121萬(wàn)
-
長(zhǎng)安汽車母公司突然更名:從“中國(guó)長(zhǎng)安”到“辰致科技”
-
豆包前負(fù)責(zé)人喬木出軌BP后續(xù):均被辭退
-
字節(jié)AI Lab負(fù)責(zé)人李航卸任后返聘,Seed進(jìn)入調(diào)整期
-
員工持股爆雷?廣汽埃安緊急回應(yīng)
-
中國(guó)“智造”背后的「關(guān)鍵力量」
最新活動(dòng)更多
-
10月23日火熱報(bào)名中>> 2025是德科技創(chuàng)新技術(shù)峰會(huì)
-
10月23日立即報(bào)名>> Works With 開發(fā)者大會(huì)深圳站
-
11月7日立即參評(píng)>> 【評(píng)選】維科杯·OFweek 2025(第十屆)物聯(lián)網(wǎng)行業(yè)年度評(píng)選
-
即日-11.25立即下載>>> 費(fèi)斯托白皮書《柔性:汽車生產(chǎn)未來(lái)的關(guān)鍵》
-
11月27日立即報(bào)名>> 【工程師系列】汽車電子技術(shù)在線大會(huì)
-
11月28日立即下載>> 【白皮書】精準(zhǔn)洞察 無(wú)線掌控——283FC智能自檢萬(wàn)用表
推薦專題
-
8 每日AI全球觀察
- 1 特斯拉工人被故障機(jī)器人打成重傷,索賠3.6億
- 2 【行業(yè)深度研究】退居幕后四年后,張一鳴終于把算法公司變成AI公司?
- 3 AI 時(shí)代,阿里云想當(dāng)“安卓” ,那誰(shuí)是“蘋果”?
- 4 拐點(diǎn)已至!匯川領(lǐng)跑工控、埃斯頓份額第一、新時(shí)達(dá)海爾賦能扭虧為盈
- 5 硬剛英偉達(dá)!華為發(fā)布全球最強(qiáng)算力超節(jié)點(diǎn)和集群
- 6 隱退4年后,張一鳴久違現(xiàn)身!互聯(lián)網(wǎng)大佬正集體殺回
- 7 L3自動(dòng)駕駛延期,逼出車企技術(shù)自我淘汰
- 8 谷歌“香蕉”爆火啟示:國(guó)產(chǎn)垂類AI的危機(jī)還是轉(zhuǎn)機(jī)?
- 9 00后華裔女生靠?jī)刹緼I電影狂賺7.8億人民幣,AI正式進(jìn)軍好萊塢
- 10 機(jī)器人9月大事件|3家國(guó)產(chǎn)機(jī)器人沖刺IPO,行業(yè)交付與融資再創(chuàng)新高!
- 生產(chǎn)部總監(jiān) 廣東省/廣州市
- 資深管理人員 廣東省/江門市
- Regional Sales Manager 廣東省/深圳市
- 銷售總監(jiān) 廣東省/深圳市
- 結(jié)構(gòu)工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 自動(dòng)化高級(jí)工程師 廣東省/深圳市
- 技術(shù)專家 廣東省/江門市
- 激光器高級(jí)銷售經(jīng)理 上海市/虹口區(qū)
- 封裝工程師 北京市/海淀區(qū)