当前位置: 首页 > 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主要是一个应用,还是以代码为主,加速算法与硬件息息相关,干了很久深度学习了,对于硬件的知识已经遗忘很多,后续还是复习一些硬件知识后再继续深入吧。

相关文章:

  • kubectl系列(六)-kubectl describe
  • ArcMap:第二届全国大学生GIS技能大赛(广西师范学院)详解-上午题
  • 阶段六-Day01-Linux入门
  • 【12】c++设计模式——>单例模式练习(任务队列)
  • Charles:移动端抓包 / windows客户端 iOS手机 / 手机访问PC本地项目做调试
  • R²决定系数
  • Day4:Linux系统编程1-60P
  • c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现(下))
  • 多线程锁-synchronized字节码分析
  • 自动驾驶:未来的道路上的挑战与机遇
  • Python3入门教程||Python3 SMTP发送邮件
  • MySQL命令行中文乱码问题
  • 机器学习之旅-从Python 开始
  • 【LeetCode高频SQL50题-基础版】打卡第3天:第16~20题
  • 数据结构之堆,栈的实现
  • sheng的学习笔记-【中文】【吴恩达课后测验】Course 2 - 改善深层神经网络 - 第一周测验
  • 微信小程序点单左右联动的效果实现
  • 云原生边缘计算KubeEdge安装配置
  • 分层强化学习 综述论文阅读 Hierarchical Reinforcement Learning: A Comprehensive Survey
  • Postman使用实例
  • 美国4月CPI同比上涨2.3%低于预期,为2021年2月来最小涨幅
  • 习近平同巴西总统卢拉共同会见记者
  • 山西省委常委李金科添新职
  • 在对国宝的探索中,让美育浸润小学校园与家庭
  • 消费维权周报|上周涉手机投诉较多,涉拍照模糊、屏幕漏液等
  • 普京:俄中关系是国家间关系的真正典范