当前位置: 首页 > news >正文

【高性能计算】CUDA编程之OpenCV的应用(教程与代码-4)//test error

imread命令将返回以蓝色、绿色和红色(BGR格式)开头的三个通道
处理视频的main函数中需要做的第一件事是创建VideoCapture对象。 GPU
CUDA模块中的函数都定义在cv::cuda命名空间中,将设备上配置给图像数据用的显存块作为其参数。
gettickcount函数返回启动系统后经过的时间(以毫秒为单位)


使用具有CUDA的opencv进行阈值滤波
 

#include <iostream>
#include "opencv2/opencv.hpp"
int main (int argc, char* argv[])
{cv::Mat h_img1 = cv::imread("images/cameraman.tif", 0);
cv::cuda::GpuMat d_result1,d_result2,d_result3,d_result4,d_result5, d_img1;
//Measure initial time ticks
int64 work_begin = cv::getTickCount(); 
d_img1.upload(h_img1);
cv::cuda::threshold(d_img1, d_result1, 128.0, 255.0, cv::THRESH_BINARY);
cv::cuda::threshold(d_img1, d_result2, 128.0, 255.0, cv::THRESH_BINARY_INV);
cv::cuda::threshold(d_img1, d_result3, 128.0, 255.0, cv::THRESH_TRUNC);
cv::cuda::threshold(d_img1, d_result4, 128.0, 255.0, cv::THRESH_TOZERO);
cv::cuda::threshold(d_img1, d_result5, 128.0, 255.0, cv::THRESH_TOZERO_INV);
cv::Mat h_result1,h_result2,h_result3,h_result4,h_result5;
d_result1.download(h_result1);
d_result2.download(h_result2);
d_result3.download(h_result3);
d_result4.download(h_result4);
d_result5.download(h_result5);
//Measure difference in time ticks
int64 delta = cv::getTickCount() - work_begin;
double freq = cv::getTickFrequency();
//Measure frames per second
double work_fps = freq / delta;
std::cout <<"Performance of Thresholding on GPU: " <<std::endl;
std::cout <<"Time: " << (1/work_fps) <<std::endl;
std::cout <<"FPS: " <<work_fps <<std::endl;return 0;
}
  • 使用cuda+opencv修改图像大小

#include <iostream>
#include "opencv2/opencv.hpp"
#include <iostream>
#include "opencv2/opencv.hpp"
int main ()
{cv::Mat h_img1 = cv::imread("images/cameraman.tif",0);cv::cuda::GpuMat d_img1,d_result1,d_result2;d_img1.upload(h_img1);int width= d_img1.cols;int height = d_img1.size().height;cv::cuda::resize(d_img1,d_result1,cv::Size(200, 200), cv::INTER_CUBIC);cv::cuda::resize(d_img1,d_result2,cv::Size(0.5*width, 0.5*height), cv::INTER_LINEAR);    cv::Mat h_result1,h_result2;d_result1.download(h_result1);d_result2.download(h_result2);cv::imshow("Original Image ", h_img1);cv::imshow("Resized Image", h_result1);cv::imshow("Resized Image 2", h_result2);cv::imwrite("Resized1.png", h_result1);cv::imwrite("Resized2.png", h_result2);cv::waitKey();return 0;
}

  • 使用HARR进行人脸检测

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
{VideoCapture cap(0);if (!cap.isOpened()) {cerr << "Can not open video source";return -1;}std::vector<cv::Rect> h_found;cv::Ptr<cv::cuda::CascadeClassifier> cascade = cv::cuda::CascadeClassifier::create("haarcascade_frontalface_alt2.xml");cv::cuda::GpuMat d_frame, d_gray, d_found;while(1){Mat frame;if ( !cap.read(frame) ) {cerr << "Can not read frame from webcam";return -1;}d_frame.upload(frame);cv::cuda::cvtColor(d_frame, d_gray, cv::COLOR_BGR2GRAY);cascade->detectMultiScale(d_gray, d_found);cascade->convert(d_found, h_found);for(int i = 0; i < h_found.size(); ++i){rectangle(frame, h_found[i], Scalar(0,255,255), 5);}imshow("Result", frame);if (waitKey(1) == 'q') {break;}}return 0;
}

总结

本教程是自己学习CUDA所遇到的一些概念与总结,由于CUDA主要是一个应用,还是以代码为主,加速算法与硬件息息相关,干了很久深度学习了,对于硬件的知识已经遗忘很多,后续还是复习一些硬件知识后再继续深入吧。

http://www.lryc.cn/news/184681.html

相关文章:

  • 高德地图行政区域四级级联数据拉取;省市区县乡镇级联数据
  • Qt_基础
  • 最新AI创作系统源码ChatGPT网站源码V2.6.3/支持Midjourney绘画/支持OpenAI GPT全模型+国内AI全模型
  • UML建模语言分析和设计
  • SystemUI导航栏
  • 3d 贴图下载quixel
  • Linux权限维持
  • 互联网通信的核心协议HTTP和HTTPS
  • javaWeb网上购物系统的设计与实现
  • MySQL 主从复制、读写分离
  • 基于虚拟阻抗的下垂控制——孤岛双机并联Simulink仿真
  • windows内核编程(2021年出版)笔记
  • 时序预测 | MATLAB实现EMD-iCHOA+GRU基于经验模态分解-改进黑猩猩算法优化门控循环单元的时间序列预测
  • FFmpeg 命令:从入门到精通 | FFmpeg 解码流程
  • 连接虚拟机工具推荐
  • 万字详解HTTP协议面试必备技能
  • Debian跳过grub页面
  • 【已解决】RuntimeError Java gateway process exited before sending its port number
  • 数据结构与算法-循环链表、双向链表
  • javascript中依次输出元素并不断循环实现echarts柱图动画效果
  • 互联网Java工程师面试题·Memcached篇·第一弹
  • git 详解-提升篇
  • RPA的安全风险及应对策略
  • 数据结构与算法--贪心算法
  • 【Unity3D】UGUI物体世界坐标转屏幕坐标问题
  • 代码随想录二刷day51
  • 接口自动化测试框架(pytest+allure+aiohttp+ 用例自动生成)
  • [Python入门教程]01 Python开发环境搭建
  • 第四章:最新版零基础学习 PYTHON 教程(第二节 - Python 数据类型—Python 字符串、列表、元组、迭代)
  • react框架与vue框架的区别