rk3399 opencv测试cpu跟gpu性能

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 <stdio.h>
#include <iostream>
#include <opencv2/opencv.hpp>
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 ms

CPU如下:
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 cpu

GPU如下:
0@200000000Hz
0@200000000Hz
0@200000000Hz

2使用GPU

代码:

#include <stdio.h>
#include <iostream>
#include <opencv2/opencv.hpp>
//opencl
#include <opencv2/core/ocl.hpp>
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 cl GPU如下: 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这种板子那么明显。

猜你喜欢

转载自www.cnblogs.com/releases/p/10308741.html