c++|关于cuda和opencv混合编译之_高斯滤波
这里都是加速之后的一些使用方式,有一些细节上面的变化
【c++|关于cuda和opencv混合编译之_高斯滤波】
//高斯滤波gpu加速.
这里介绍一下kerneltype 这个是高斯核的大小,一般为3*3 5*5 7*7 等.bool gaussianBlur_gpu(cv::Mat &src,cv::Mat &dst,int kernelType = 5)
{ if (src.data =https://www.it610.com/article/= nullptr)
{
return false;
} cv::cuda::GpuMat src_gpu, dst_gpu5x5;
src_gpu.upload(src);
//注意这个细节 cv::ptr, 这个东西就是个智能指针,shred_ptr<> 这个东西,别被迷惑了.
cv::Ptr filter5x5,;
//这里的这几个参数,大家编译好之后,直接看源码的注释,或者我这里献丑了,给大家记录一下. filter5x5 = cv::cuda::createGaussianFilter(CV_8UC3, CV_8UC3,cv::Size(5,5),1);
filter5x5->apply(src_gpu, dst_gpu5x5);
dst_gpu5x5.download(dst);
return true;
}//这个是它的原型.
/** @brief Creates a Gaussian filter.@param src类型源图像类型。
@param dst类型目标数组类型。
@param ksize孔径大小。
@param sigma1 高斯 在水平方向。
@param sigma2 Gaussian sigma 在垂直方向。
\f$\texttt{sigma2}\leftarrow\texttt{sigma1}\f$ .
@param rowBorderMode Pixel extrapolation method in the vertical direction. Fordetails, see
borderInterpolate.
@param columnBorderMode Pixel extrapolation method in the horizontal direction.@sa GaussianBlur
*/
Ptr createGaussianFilter(int srcType, int dstType, Size ksize,
double sigma1, double sigma2 = 0,
int rowBorderMode = BORDER_DEFAULT, int columnBorderMode = -1);
//测试环节.
void main()
{ cv::Mat gray_r = imread("image\\group_7.bmp");
cv::Mat gaussiand_result=cv::Mat::zeros(h_result.cols, h_result.rows,CV_8UC3);
gaussianBlur_gpu(gray_r,gaussiand_result);
imshow("gaussiand_result", gaussiand_result);
cv::waitKey(0);
}
经过加速,原来几十毫秒的时间,瞬间之后 //0.019ms ,怎么样,够快吧
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- 四首关于旅行记忆的外文歌曲
- 醒不来的梦
- opencv|opencv C++模板匹配的简单实现
- 关于自我为中心的一点感想
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- 关于Ruby的杂想
- 关于读书的思考
- 关于this的一些问题(1)