目录

cuda拷贝

cuda+opencv yolov4

颜色转换:

cv::cuda::split

查看10*10像素

down_load用法


特别全的学习资料:

我想将OpenCV::cuda::GpuMat类型的数据给TensorRT GPU加速,请问有方法吗? - 知乎

cuda拷贝

cv::Mat image = cv::imread("C:\\RegressionModelImages\\cat.png", cv::IMREAD_COLOR);
cv::cvtColor(image, image, cv::COLOR_BGR2RGB);

This can be converted to a GpuMat if necessary:

cv::cuda::GpuMat gpu_image(image.size(), image.type());
cv::Mat frame_cpu;cv::cuda::GpuMat d_frame_gpu;cv::Mat down_img;double t = (double)cv::getTickCount();frame_cpu=cv::imread("/home/tao/useful/faceboxes_tensorrt_cuda/cuda_opencv/test.jpg");cvtColor(frame_cpu,frame_cpu,CV_RGB2BGRA);frame_cpu.convertTo(frame_cpu, CV_32FC4,4);std::cout<<frame_cpu.channels()&lt;&lt;std::endl;d_frame_gpu.upload(frame_cpu);frame_pad(d_frame_gpu,d_frame_gpu);cv::cuda::resize(d_frame_gpu,d_frame_gpu,cv::Size(1024,1024));size_t inputWidth=1024;size_t inputHeight=1024;size_t outputWidth=1024;size_t outputHeight=1024;float* output;float* output_host;cudaMalloc((void**)&output,sizeof(float)*inputWidth*inputWidth*3);cudaPreImageNet((float4*)d_frame_gpu.pt<float4>(), inputWidth, inputHeight,output, outputWidth, outputHeight);cudaMemcpy(output_host,output,sizeof(float)*inputWidth*inputWidth*3,cudaMemcpyDeviceToHost);

使用OpenCV操作CUDA送检图像到TensorRT(SSD模型)_ikevin的专栏-CSDN博客

cuda+opencv yolov4

使用CUDA+OpenCV加速yolo v4性能_深度学习与计算机视觉-CSDN博客

颜色转换:

cv::cuda::resize(gpu_frame, gpu_frame, Size(960, 540), 0, 0, INTER_LINEAR); // convert to gray cv::cuda::GpuMat gpu_current; cv::cuda::cvtColor(gpu_frame, gpu_current, COLOR_BGR2GRAY); 

cv::cuda::split

cv::cuda::split 使用_jacke121的专栏-CSDN博客

        cv::Mat image = cv::imread(imgpath + filelist[i]);//std::cout << "image:" << filelist[i] << std::endl;if (image.empty()) {std::cout << "读入图片为空,请检查路径!" << std::endl;system("pause");return -1;}/* cv::Mat image;cv::cvtColor(image_o, image, cv::COLOR_BGR2RGB);*/DWORD start2 = GetTickCount();cv::cuda::GpuMat imageGpu(image.cols, image.rows, CV_8UC3, cv::Scalar(0, 0, 0));//cv::cuda::GpuMat imageGpu;// (cv::Size(image.cols, image.rows), CV_8UC3);cv::cuda::GpuMat imageRGB(image.cols, image.rows, CV_32FC3, cv::Scalar(0, 0, 0));imageGpu.upload(image);imageGpu.convertTo(imageRGB, CV_32FC3, 1,0);

转cpu:

 cv::Mat dst;flt_image_out.download(dst);
    cv::Mat dst_gold;cv::cvtColor(src, dst_gold, cv::COLOR_BGR2RGB);

查看10*10像素

区别:一个3b,一个3f。

cv::Mat raw_image = cv::imread(image_name.c_str());for (int i = 0; i <10; i++){for (int j = 0; j <10; j++){std::cout << "(" <<(float)raw_image.at<cv::Vec3b>(i, j)[0]<< ", " <<(float)raw_image.at<cv::Vec3b>(i, j)[1]<< ", " <<(float)raw_image.at<cv::Vec3b>(i, j)[2]<< ") " << std::endl;std::cout << "(" <<(float)raw_image.at<cv::Vec3f>(i, j)[0] << ", " <<(float)raw_image.at<cv::Vec3f>(i, j)[1] << ", " <<(float)raw_image.at<cv::Vec3f>(i, j)[2] << ") " << std::endl;}}

查看全部像素:


void showMat(cv::Mat &img){std::cout << "图像元素查看 : " << img.rows<<"," << img.cols <<std::endl;for (int i = 0; i<img.rows; i++){for (int j = 0; j < img.cols; j++){std::cout<< "("<<(float)img.at<cv::Vec3f>(i, j)[0]<< ", " <<(float)img.at<cv::Vec3f>(i, j)[1]<< ", " <<(float)img.at<cv::Vec3f>(i, j)[2]<< ") " << std::endl;//(int)img.at<cv::Vec3b>(i, j)[0]<< ", " <<//(int)img.at<cv::Vec3b>(i, j)[1]<< ", " <<//(int)img.at<cv::Vec3b>(i, j)[2]<< ") " << std::endl;}}}
}

cuda方式操作:

OpenCV+CUDA 遍历cv::Mat笔记_YaoJiawei329的博客-CSDN博客

down_load用法

比较慢

        DWORD start2 = GetTickCount();cv::cuda::GpuMat imageGpu(cv::Size(image.cols, image.rows), CV_8UC3);cv::cuda::GpuMat imageRGB;imageGpu.upload(image);imageGpu.convertTo(imageRGB, CV_32FC3, 1,0);//std::cout << "dst:" << errMsg << std::endl;cv::Mat dst;imageRGB.download(dst);DWORD end2 = GetTickCount();std::cout << "gpu img time:" << end2 - start2 << "ms " << image.cols << " " << image.rows << std::endl;

gpu间拷贝:

https://github.com/LiPorkLi/BatteryFilmCheck/blob/c048163ac0d10cb7db2e7506b7e0c8d8f8a96a20/ProtoParams/Alogrithm/BoudarySearch.cpp

cudaMemcpy(SrcDstImg->data + iStep + iS, SrcDstImg->data + iStep + m_vecvecBoundary[i][j].first, sizeof(uchar)*iLength, cudaMemcpyDeviceToDevice);//memcpy(SrcDstImg->data + iStep + iS, SrcDstImg->data + iStep + m_vecvecBoundary[i][j].first, sizeof(uchar)*iLength);iE = m_vecvecBoundary[i][j].second + iLength;if (iE > SrcDstImg->cols){iE = SrcDstImg->cols - 1;iLength = iE - m_vecvecBoundary[i][j].second + 1;}cudaMemcpy(SrcDstImg->data + iStep + m_vecvecBoundary[i][j].second, SrcDstImg->data + iStep + (m_vecvecBoundary[i][j].second - iLength), sizeof(uchar)*iLength, cudaMemcpyDeviceToDevice);

reshape:

reshape完毕后还是二维向量,无法变成一维向量。

 cv::cuda:GPUMat input;cv::cuda:GPUMat input3;
input3 = input.reshape(1,1);

opencv cuda使用笔记相关推荐

  1. 深度学习(三十六)异构计算CUDA学习笔记(1)

    异构计算CUDA学习笔记(1) 原文地址:http://blog.csdn.net/hjimce/article/details/51506207 作者:hjimce 近日因为感觉自己在深度学习工程化 ...

  2. cuda学习笔记5——CUDA实现图像形态学腐蚀、膨胀

    cuda学习笔记5--CUDA实现图像形态学腐蚀.膨胀 代码 linux如何编译cuda和opencv代码 耗时情况 代码 #include "cuda_runtime.h" #i ...

  3. CUDA学习笔记之 CUDA存储器模型

    CUDA学习笔记之 CUDA存储器模型 标签: cuda存储bindingcache编程api 2010-12-14 01:33 1223人阅读 评论(0) 收藏 举报 分类: CUDA(26) GP ...

  4. CUDA学习笔记之程序优化

    CUDA学习笔记之程序优化 标签: cuda优化conflict存储算法数学计算 2010-01-05 17:18 5035人阅读 评论(4) 收藏 举报 分类: CUDA(6) 版权声明:本文为博主 ...

  5. opencv进阶学习笔记3:像素运算和图像亮度对比度调节

    基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版目录: python+opencv进阶版学习笔记目录(适合有一定基础) 像素运算 要求两张图大小,以及格式(np ...

  6. 【计算机视觉】opencv入门学习笔记Part.1

    [计算机视觉]opencv入门学习笔记Part.1 1 前言 1.1 opencv概述(摘取自百度百科) 1.2 图像概念引入 1.3 安装opencv库 2 图像基本操作 2.1 图像的读取 2.2 ...

  7. OpenCV API使用笔记 —— 4. 如何保存视频文件

    文章目录 写入图片帧信息 C/CPP示例 Python示例 在<OpenCV API使用笔记 -- 1. 如何打开摄像头或视频文件> 介绍过使用「VideoCapture」类,可以打开摄像 ...

  8. CUDA学习笔记(持续更新——蜗速)

    CUDA学习笔记(持续更新--蜗速) 1.CUDA 程序实现流程如下 2.内存管理 3.核函数 4.全局数据访问唯一索引 5.设备管理 附录代码 1.CUDA 程序实现流程如下 将数据从CPU内存拷贝 ...

  9. Win10+Python3+OpenCV+CUDA——在win中配置OpenCV4.5并与Python环境绑定

    Win10+Python3+OpenCV+CUDA--在win中配置OpenCV4.5并与Python环境绑定 前言 安装Anaconda和基本库 下载对应版本的CUDA 配置方案1.通过下载预购建文 ...

最新文章

  1. MQTT 协议 Client ID 长度不能超过23个字符
  2. CGRect CGFloat 不能使用
  3. 云白条,做有温度的金融,帮助有困难的人
  4. java 连接 postgresql_java如何连接数据库并对其操作(以PostgreSQL为例)
  5. SAP Kyma组件一览
  6. Linux中Shell循环结构for用法笔记
  7. ADOCE打包到WinCE NK.bin镜像中
  8. 装箱问题(信息学奥赛一本通-T1226)
  9. 怎么卡我的世界服务器物品,我的世界怎么卡服务器物品 | 手游网游页游攻略大全...
  10. android点击图片跳转页面底部,【报Bug】安卓底部选项卡webview模式下 点击跳转到某个页面后,会出现底部重叠的问题...
  11. CentOS 6.3 配置 yum
  12. python寻峰,寻找峰值
  13. 马云留给阿里的财富:4个应用场景落地+90个区块链专利
  14. 莫让“专业对口”俘虏了你
  15. Android平台招商银行“一网通”支付对接采坑记
  16. 【金融项目】尚融宝项目(十)
  17. jsp 登陆成功后,显示登录的用户名
  18. 字体图标之Symbol用法
  19. 城市交通的5D模式 | 不同尺度下研究的城市交通
  20. 生物信息学软件_生物信息学视频教程大赛

热门文章

  1. Linux的环境变量
  2. Windows内核新手上路2——挂钩shadow SSDT
  3. 排序算法--排序算法汇总
  4. 编程之美2.12 快速寻找满足条件的两个数
  5. linux 线程 进程经典文章
  6. linux 约等于符号,Mac OS X基础教程:特殊符号的快捷输入方式
  7. kingcms php 下载,KingCMS _KingCMS官方网站
  8. 计算机二级考试办公室高级应用考点,2018年计算机二级Office高级应用考点:PowerPoint...
  9. java发送短信模板_java发送短信
  10. mysql中所有时间类型_MySQL 中的日期时间类型