www.gusucode.com > IPCV_Eval_Kit_R2019a_0ce6858工具箱matlab程序源码 > IPCV_Eval_Kit_R2019a_0ce6858/code/demo_files/I3_01_5_cudaMex.m
%% 夋憸張棟傪GPU忋偱幚峴 % 堦晹偺張棟偵偮偄偰丄CUDA MEX傪惗惉偟偰摑崌 clear all, close all, clc %% 夋憸僨乕僞撉傒崬傒 imCPU = imread('concordaerial.png'); %% 僨乕僞傪GPU偵揮憲 imGPU = gpuArray(imCPU); %% 僌儗乕僗働乕儖曄姺 imGPUgray = rgb2gray(imGPU); %% 2抣壔 imWaterGPU = imGPUgray<70; %% 嵶偐偄僲僀僘彍嫀 imWaterMask = imopen(imWaterGPU,strel('disk',4)); imWaterMask = bwmorph(imWaterMask,'erode',3); imshow(imWaterMask) %% 僈僂僔傾儞僼傿儖僞偱夋憸傪傏偐偡(PCT) %blurH = fspecial('gaussian',20,5); %imWaterMask = imfilter(single(imWaterMask)*10, blurH); imWaterMask2 = myfilter(imWaterMask); %% 惵怓偺梫慺傪嫮挷 blueChannel = imGPU(:,:,3); blueChannel2 = imlincomb(1, blueChannel,6, uint8(imWaterMask2)); imGPU(:,:,3) = blueChannel2; %% CPU偵僨乕僞傪揮憲偟丄寢壥傪昞帵 outCPU = gather(imGPU); imshow(outCPU) %% CUDA MEX惗惉 cfg = coder.gpuConfig('mex'); cfg.TargetLang = 'C++'; t = coder.typeof(gpuArray(false), [2036 3060]); codegen -args {t} -config cfg myfilter %% CUDA MEX傪棙梡偟偰僈僂僔傾儞僼傿儖僞埲崀偺張棟傪嵞幚峴 % 僈僂僔傾儞僼傿儖僞偱夋憸傪傏偐偡(CUDA MEX) imWaterMask2 = myfilter_mex(imWaterMask); %% 惵怓偺梫慺傪嫮挷 blueChannel2 = imlincomb(1, blueChannel,6, uint8(imWaterMask2)); imGPU(:,:,3) = blueChannel2; %% CPU偵僨乕僞傪揮憲偟丄寢壥傪昞帵 outCPU2 = gather(imGPU); imshowpair(outCPU, outCPU2, 'montage') %% % Copyright 2019 The MathWorks, Inc.