摘要:
问题描述:项目中,需要对高清监控视频分析处理,经测试,其解码过程所占CPU资源较多,导致整个系统处理效率不高,解码成为系统的瓶颈。解决思路:利用GPU解码高清视频,降低解码所占用CPU资源,加速解码过程。一、OpenCV中的硬解码OpenCV2.4.6中,已实现利用GPU进行读取视频,由cv::gpu::VideoReader_GPU完成,其示例程序如下。 1 int main(int argc, const char* argv[]) 2 { 3 if (argc != 2) 4 return -1; 5 const std::string fname(arg... 阅读全文
摘要:
CUDA基本使用方法在介绍OpenCV中GPU模块使用之前,先回顾下CUDA的一般使用方法,其基本步骤如下:1.主机代码执行;2.传输数据到GPU;3.确定grid,block大小;4.调用内核函数,GPU运行程序;5.传输结果到CPU;6.继续主机代码执行。下图是两个向量相加的简单示例程序和处理流图。注意的问题:cu,cpp文件的组织内核函数和其wrapper函数置于cu文件中。在cpp文件声明wrapper函数,并调用wrapper函数。wrapper函数的声明定义需加extern "C"。OpenCV中GPU模块的使用使用的步骤与CUDA的基本使用方法类似,只是Ope 阅读全文
摘要:
问题描述:在测试目标跟踪算法时,需要选择不同区域作为目标,进行目标跟踪,测试目标跟踪的效果。解决思路:1.OpenCV中提供了鼠标交互控制,利用setMouseCallback()给固定的窗口设置鼠标回调函数。2.在鼠标回调函数中,选择感兴趣区域。代码实现如下,将感兴趣区域封装在MouseSelect类中,提供选择点和矩形框两种模式。 1 #pragma once 2 #ifndef __MOUSESELECT_H__ 3 #define __MOUSESELECT_H__ 4 5 #include 6 #include 7 8 #define MAX_OBJECTS 10 9 ... 阅读全文