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這種板子那么明顯。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM