rk3399的gpu测试节点在:
cat /sys/devices/platform/ff9a0000.gpu/devfreq/ff9a0000.gpu/load
如果没有使用gpu的话,是显示0@200000000Hz,0就是使用率占0%
参考下opencv官网的文档:https://opencv.org/platforms/opencl.html
我们打开摄像头 进行灰阶并高斯模糊处理为例子
1.使用CPU操作:
代码:
#include
#include
#include
using namespace std;
using namespace cv;
int main(int argc, char **argv)
{int64 start=0,end=0;VideoCapture vcap(0);Mat frame, frameGray;for(;;){start = getTickCount();vcap >> frame;cvtColor(frame, frameGray, CV_BGR2GRAY);GaussianBlur(frameGray, frameGray, Size(3,3), 0,0);end = getTickCount();printf("time: %f ms\n", 1000.0*(end -start)/getTickFrequency());}return 0;
}
运行如下:
代码执行如下:
time: 33.082281 ms
time: 32.365384 ms
time: 34.381331 ms
time: 31.857022 ms
time: 33.016366 ms
time: 36.259030 ms
time: 30.849634 msCPU如下:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
16972 pi 20 0 504792 44632 26112 R 110.5 1.1 0:14.98 cpuGPU如下:
0@200000000Hz
0@200000000Hz
0@200000000Hz
2使用GPU
代码:
#include
#include
#include
//opencl
#include
using namespace std;
using namespace cv;
int main(int argc, char **argv)
{ocl::setUseOpenCL(true);VideoCapture vcap(0);UMat frame, frameGray;int64 start=0,end=0;for(;;){start = getTickCount();vcap >> frame;cvtColor(frame, frameGray, CV_BGR2GRAY);GaussianBlur(frameGray,frameGray , Size(3,3), 0,0);end = getTickCount();printf("time: %f ms\n", 1000.0*(end - start)/getTickFrequency());}return 0;
}
运行如下:
代码执行如下:
time: 42.600703 ms
time: 39.476152 ms
time: 43.411226 ms
time: 43.945546 ms
time: 43.886631 ms
time: 39.469735 ms
time: 44.085834 ms
time: 43.899755 ms
time: 39.333239 ms
time: 41.394690 ms
time: 40.303882 ms
time: 40.037888 ms
CPU如下:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17913 root 20 0 455452 66108 42952 S 62.9 1.7 0:06.04 clGPU如下:
24@200000000Hz
34@200000000Hz
42@200000000Hz
40@200000000Hz
38@200000000Hz
36@200000000Hz
39@200000000Hz
36@200000000Hz
关于opencv编译我之前已经说过,如果想编译简单点,就在cmake时候 将-D BUILD_opencv_world=YES加上,
编译命令:g++ -o cpu cpu.cpp -I/usr/local/opencv_rk3399/include -L/usr/local/opencv_rk3399/lib/ -lopencv_world
rk3399 个人测下来感觉gpu处理跟cpu处理速度并不明显,而且GPU有时候还有点稍慢。并没有JETSON TX2这种板子那么明显。